(四)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;
    }

}
时间: 2024-10-18 00:50:19

(四)springmvc之获取servlet原生对象的相关文章

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

一.准备工作: 在web.xml中添加 [html] view plain copy <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> 二.使用方法: 1.方法一:通过代码实现 [java] view plain copy HttpServletRequest requ

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

SpringMVC的handler接收如下的ServletAPI类型的参数: ? HttpServletRequest ? HttpServletResponse ? HttpSession ? java.security.Principal ? Locale ? InputStream ? OutputStream ? Reader ? Writer 示例: @RequestMapping("/testServletAPI") public void testServletAPI(H

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

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息.ServletContext的应用 [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String

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

一.Pojo作为参数: 实体: package com.hy.springmvc.entities; public class User { private String username; private String password; private String email; private Address address; public String getUsername() { return username; } public void setUsername(String us

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

[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html 联系方式:[email protected] [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String getInitParameter(String name) -- 获取当前S

认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

(一)认识JQuery  JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法    JQuery的主旨:以更少的代码,实现更多的功能 (二)JQuery的优势 1)可以像CSS一样访问和操作DOM 2)修改CSS控制页面外观 3)简化JS代码操作 4)事件代理更加容易 5)动画效果使用方便 6) Ajax技术更加完美 7)大量的基于Jquery的插件 8)可以自定义扩展功能插件 (三)JQuery的语法 格式:$(selector).actio

JavaScript原生对象总纲

一. javascript之Array类 创建js数组两种方式: var arr = [];  或var arr = new Array(); ()里可以指定长度,也可以不指定,指不指定都无所谓,因为js里的数组长度是可变的 1.concat(arr1,arr2,arr3......arrx): js数组合并,返回合并后的新数组,传递一个或多个数组,字符串都可以行,返回的都是一个合并的新数组(传的数组会先转成字符串再一个一个的传入进去). 2. join(): 将数组元素按指定的分隔符拼接成一字

SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法

1.SpringMVC中通过@ResponseBody返回对象,作为JQuery中的ajax返回值 package com.kuman.cartoon.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.filefilter.FalseFileFilter; import org.slf4j.Logger; import org.s

JavaScript原生对象及扩展

转自:http://segmentfault.com/a/1190000002634958 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集:而后者包括了一些在运行过程中动态创建的对象. 原生对象(New后的对象) ECMA-262 把原生对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”.包括如下: Object.Function.Array.Stri