一、使用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原生对象的更多相关文章

  1. 获取Servlet原生API

    1.请求 <a href="param/test1">Servlet原生API</a> 2.处理方法 @RequestMapping("/para ...

  2. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_7 获取Servlet原生的API

    控制器里面获取常用的request对象或者Response对象. 想拿到谁, 就在参数上写上谁 再获取servletConetext并输出

  3. [四]SpringMvc学习-对servlet与json的支持与实现

    1.对servletAPI的支持 request.response.session作为参数自动注入 2.对Json的支持 2.1springmvc配置文件中添加支持对象与json的转换 <mvc ...

  4. springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象

    一.准备工作: 在web.xml中添加 <listener> <listener-class> org.springframework.web.context.request. ...

  5. SpringMVC 支持使用Servlet原生API作为目标方法的参数

    具体支持一下类型: * HttpServletRequest * HttpServletResponse * HttpSession * java.security.Pricipal * Locale ...

  6. SpringMVC之使用Servlet原生API作为参数

    SpringMVC的handler接收如下的ServletAPI类型的参数: • HttpServletRequest • HttpServletResponse • HttpSession • ja ...

  7. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  8. JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前 ...

  9. springmvc使用pojo和servlet原生api作为参数

    一.Pojo作为参数: 实体: package com.hy.springmvc.entities; public class User { private String username; priv ...

随机推荐

  1. 基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)

    本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...

  2. 面试准备4——C++相关知识

    指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...

  3. Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考)

    ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考) 1.返回顶部 1. #define(C# 参考) 2018/06/30 使用 #define 来定 ...

  4. Web前端接入人机识别验证码---腾讯防水墙

    Web前端接入 1. 准备AppID 验证码接入需要先在管理后台中注册获取APPID和APPSECRET,注册步骤请参考 快速开始 2. 快速接入步骤 1.在Head的标签内最后加入以下代码引入验证J ...

  5. 002-poi-excel-导出设置单元格数据校验规则、筛选功能

    一.数据验证概述 推荐以下操作在2007之后操作 1.1.查看excel的数据验证 1.进入 2.设置规则 通过验证条件允许,可以看到是每个单元格默认只成立一种条件 1.2.POI代码开发-数据验证 ...

  6. Qt编写输入法V2019终极版

    一.前言 之前写过的V2018版本的输入法,本来已经很完善了,不打算更新升级了,最近有个朋友找我定制一个输入法,需要高仿一个苹果MAC电脑的输入法,MAC操作系统的审美无疑是相当棒的,于是乎直接拿以前 ...

  7. django中的多级评论

    需求分析 一般论坛中有评论和子评论,这样很容易就成了一个评论树,比如以下情况,先看数据结构: #nid,评论内容,跟帖对象(None为根评论) (1, '111', None), (2, '222', ...

  8. Java使用MyBatis的ScriptRunner执行SQL脚本

    脚本文件D:/test_transaction.sql: start transaction; drop table if exists testdb.test_transaction_table; ...

  9. 【转】hr的嘴,骗人的鬼

    入职前,从上往下读,入职后,从下往上读. - 我们非常欢迎新鲜血液补充进我们的团队:- 如果条件太苛刻,我待不久的:- 我们公司绝对不可能这样:- 请问每个月的工作都能按时足额发放吗?- 这难道不是理 ...

  10. 【Leetcode_easy】690. Employee Importance

    problem 690. Employee Importance 题意:所有下属和自己的重要度之和,所有下属包括下属的下属即直接下属和间接下属. solution:DFS; /* // Employe ...