(四)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 ...
随机推荐
- Greenwich.SR2版本的Spring Cloud Config+BUS实例
Spring Cloud Config统一的配置中心同注册中心Eureka一样,也分服务端和客户端.服务端用来保存配置信息,客户端用来读取.它的优势是基于Git仓库,支持多环境.多分支配置.动态刷新. ...
- Q_PROPERTY
1.在自定义控件中看到这个用法 2.Q_PROPERTY(double Min READ getMin WRITE setMin) 代表当前类有一个double属性叫Min,有一个读函数getMin, ...
- Scala 踩坑系列
scala List scala list 如果使用 list(i)的形式进行遍历,如果list数据太多,每次遍历耗时会很久. 因为有一个 head tail 的概念 . 和java的List根据角标 ...
- 迭代器iterator-生成器generator
1. 迭代 根据记录的前面的元素的位置信息 去访问后续的元素的过程 -遍历 迭代 2. 可迭代对象 iterable 如何判断可迭代对象的3种方式 能够被迭代访问的对象 for in 常用可迭代对象- ...
- @Qualifier is not applicable for constructor
问题场景: 笔者在springboot项目中使用java_websocket作为客户端,调用第三方ws服务. 最初只调用一个ws服务,以下代码可以正常工作: @Bean public URI ttsU ...
- 简介Python设计模式中的代理模式与模板方法模式编程
简介Python设计模式中的代理模式与模板方法模式编程 这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下 代理模式 Prox ...
- tp5.1 where 时间查询
$where_time = []; if ($_GET['s_time'] && !isset($_GET['e_time'])){ $where_time = ['add_time' ...
- 【Leetcode_easy】1078. Occurrences After Bigram
problem 1078. Occurrences After Bigram 题意 solution: class Solution { public: vector<string> fi ...
- Python3之匿名函数
当我们在传入函数时,有些时候,不需要显式定义函数.直接传入匿名函数更方便,例如 >>> list(map(lambda x:x*x,[1,2,3,4,5,6,7,8,9])) [1, ...
- iOS-CGAffineTransform相关函数
CGAffineTransform相关函数 CGAffineTransformMakeTranslation(width, 0.0);是改变位置的,CGAffineTransformRotate(tr ...