(四)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 ...
随机推荐
- Delphi BASE64单元EncdDecd的修改
Delphi BASE64单元EncdDecd的修改 EncdDecd.pas两个函数声明: procedure EncodeStream(Input, Output: TStream);proced ...
- 服务器更新了php版本报错(PHP7.3)
Warning: "continue" targeting switch is equivalent to "break". Error:"con ...
- delphi 获得父目录–指定级父目录
function get_dir_parent(dir:string;n:integer):string; //n为几级父目录varst:string;i:integer;begin st:=GetC ...
- 010-多线程-JUC集合-Queue-ConcurrentLinkedQueue
一.概述 ConcurrentLinkedQueue是线程安全的队列,它适用于“高并发”的场景. 它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)原则对元素进行排序.队列元素中不可以 ...
- websphere 英文版部署(更新)项目【我】
websphere 部署(更新)项目 首先在控制台页面依次点左侧,打开应用配置页面: 然后在右侧勾选我们要重新部署的项目,首先点上面的 停止 按钮,等项目停止后,再勾选项目,点上面的 更新 按钮(如 ...
- starUML建模C++【逆向工程】
1.下载starUML 2.打开starUML,选择default approach 3.添加 Profile,把C++添加进去 4.在右侧的工程上点右键—[C++]—-[Reverse Engine ...
- Qt编写自定义控件43-自绘电池
一.前言 到了9102年了,现在智能手机不要太流行,满大街都是,甚至连爷爷奶奶级别的人都会用智能手机,本次要写的控件就是智能手机中的电池电量表示控件,采用纯painter绘制,其实也可以采用贴图,我估 ...
- JS 时间处理(GMT转换,超24小时加一天,时间差计算)
计算天数,加小时,加分数 Date.prototype.Format = function (fmt) { // author: meizz var o = { "M+": thi ...
- (十六)toString()的用法
每一个非基本类型的对象都有一个toString()方法,而且当编译器需要一个String而你却只有一个对象时候,该方法便会被调用. public class te { public String to ...
- Java解压tar.Z文件(使用Apache Commons-compress)
这里使用apache commons compress对.tar.Z格式文件进行解压. 对于一个文件test.tar.Z,我们可以将解压过程理解为: 将test.tar.Z解压为test.tar: 将 ...