(四)springmvc之获取servlet原生对象
一、使用DI注入的方式
<a href="<%=request.getContextPath()%>/servletObj_1">DI注入的方式</a>
controller
package com.controller.servletobj; import java.io.PrintWriter; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class ServletObj_1 {
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
@Autowired
private HttpSession session;
@Autowired
private ServletContext servletContext; @RequestMapping(value = "/servletObj_1")
public ModelAndView exuecte() throws Exception {
response.setContentType("text/html");
String contextPath = request.getContextPath();
String sessionID = session.getId();
String indexPath = servletContext.getRealPath("/index.jsp");
PrintWriter out = response.getWriter(); out.println("contextPath = " + contextPath+"<br/><br/>");
out.println("sessionID = " + sessionID+"<br/><br/>");
out.println("indexPath = " + indexPath+"<br/><br/>"); out.flush();
out.close(); return null;
}
}
二、形参传入的方式:ServletContext不能通过形参的方式注入,
<a href="<%=request.getContextPath()%>/servletObj_2">形参传入的方式</a>
controller
package com.controller.servletobj; import java.io.PrintWriter; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class ServletObj_2 { @RequestMapping(value = "/servletObj_2")
public ModelAndView exuecte(HttpServletRequest request,
HttpServletResponse response, HttpSession session) throws Exception {
response.setContentType("text/html");
/**
* ServletContext不能通过形参的方式注入,
*
* 通过其他对象来进行获取。
*/
ServletContext servletContext = request.getServletContext();
String contextPath = request.getContextPath();
String sessionID = session.getId();
String indexPath = servletContext.getRealPath("/index.jsp");
PrintWriter out = response.getWriter(); out.println("contextPath = " + contextPath + "<br/><br/>");
out.println("sessionID = " + sessionID + "<br/><br/>");
out.println("indexPath = " + indexPath + "<br/><br/>"); out.flush();
out.close(); return null;
}
}
ServletContext不能通过形参的方式注入,
三、拦截器的方式:只能注入ServletContextAware和ServletConfigAware接口
<a href="<%=request.getContextPath()%>/servletObj_3">拦截器的方式</a>
controller
package com.controller.servletobj; import java.io.PrintWriter; import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.ServletConfigAware;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.servlet.ModelAndView; /**
* 通过拦截器来注入,只能注入ServletContextAware和ServletConfigAware接口
*
*/
@Controller
public class ServletObj_3 implements ServletContextAware, ServletConfigAware {
private ServletContext servletContext;
private ServletConfig servletConfig; @Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
} @Override
public void setServletConfig(ServletConfig servletConfig) {
this.servletConfig = servletConfig; } @RequestMapping(value = "/servletObj_3")
public ModelAndView exuecte(HttpServletRequest request,
HttpServletResponse response, HttpSession session) throws Exception {
response.setContentType("text/html");
String contextPath = request.getContextPath();
String sessionID = session.getId();
String indexPath = this.servletContext.getRealPath("/index.jsp");
PrintWriter out = response.getWriter(); out.println("contextPath = " + contextPath + "<br/><br/>");
out.println("sessionID = " + sessionID + "<br/><br/>");
out.println("indexPath = " + indexPath + "<br/><br/>"); out.flush();
out.close(); return null;
} }
(四)springmvc之获取servlet原生对象的更多相关文章
- 获取Servlet原生API
1.请求 <a href="param/test1">Servlet原生API</a> 2.处理方法 @RequestMapping("/para ...
- 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_7 获取Servlet原生的API
控制器里面获取常用的request对象或者Response对象. 想拿到谁, 就在参数上写上谁 再获取servletConetext并输出
- [四]SpringMvc学习-对servlet与json的支持与实现
1.对servletAPI的支持 request.response.session作为参数自动注入 2.对Json的支持 2.1springmvc配置文件中添加支持对象与json的转换 <mvc ...
- springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象
一.准备工作: 在web.xml中添加 <listener> <listener-class> org.springframework.web.context.request. ...
- SpringMVC 支持使用Servlet原生API作为目标方法的参数
具体支持一下类型: * HttpServletRequest * HttpServletResponse * HttpSession * java.security.Pricipal * Locale ...
- SpringMVC之使用Servlet原生API作为参数
SpringMVC的handler接收如下的ServletAPI类型的参数: • HttpServletRequest • HttpServletResponse • HttpSession • ja ...
- springMVC中获取request和response对象的几种方式(RequestContextHolder)
springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...
- JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用
[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前 ...
- springmvc使用pojo和servlet原生api作为参数
一.Pojo作为参数: 实体: package com.hy.springmvc.entities; public class User { private String username; priv ...
随机推荐
- 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)
本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...
- 面试准备4——C++相关知识
指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...
- Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考)
ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考) 1.返回顶部 1. #define(C# 参考) 2018/06/30 使用 #define 来定 ...
- Web前端接入人机识别验证码---腾讯防水墙
Web前端接入 1. 准备AppID 验证码接入需要先在管理后台中注册获取APPID和APPSECRET,注册步骤请参考 快速开始 2. 快速接入步骤 1.在Head的标签内最后加入以下代码引入验证J ...
- 002-poi-excel-导出设置单元格数据校验规则、筛选功能
一.数据验证概述 推荐以下操作在2007之后操作 1.1.查看excel的数据验证 1.进入 2.设置规则 通过验证条件允许,可以看到是每个单元格默认只成立一种条件 1.2.POI代码开发-数据验证 ...
- Qt编写输入法V2019终极版
一.前言 之前写过的V2018版本的输入法,本来已经很完善了,不打算更新升级了,最近有个朋友找我定制一个输入法,需要高仿一个苹果MAC电脑的输入法,MAC操作系统的审美无疑是相当棒的,于是乎直接拿以前 ...
- django中的多级评论
需求分析 一般论坛中有评论和子评论,这样很容易就成了一个评论树,比如以下情况,先看数据结构: #nid,评论内容,跟帖对象(None为根评论) (1, '111', None), (2, '222', ...
- Java使用MyBatis的ScriptRunner执行SQL脚本
脚本文件D:/test_transaction.sql: start transaction; drop table if exists testdb.test_transaction_table; ...
- 【转】hr的嘴,骗人的鬼
入职前,从上往下读,入职后,从下往上读. - 我们非常欢迎新鲜血液补充进我们的团队:- 如果条件太苛刻,我待不久的:- 我们公司绝对不可能这样:- 请问每个月的工作都能按时足额发放吗?- 这难道不是理 ...
- 【Leetcode_easy】690. Employee Importance
problem 690. Employee Importance 题意:所有下属和自己的重要度之和,所有下属包括下属的下属即直接下属和间接下属. solution:DFS; /* // Employe ...