zoukankan      html  css  js  c++  java
  • (四)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;
        }
    
    }
  • 相关阅读:
    python笔记01
    【工具大道】ssh登录Linux服务器,并显示图形化界面
    【夯实PHP基础】PHP常用类和函数总结
    【开发软件】 在Mac下配置php开发环境:Apache+php+MySql
    【工具大道】UML的点点滴滴
    【ctags/cscope/project安装使用】给神编辑器vim添加新的翅膀
    PHP程序员的技术成长规划
    【夯实PHP基础】PHPUnit -- PHP测试框架
    【夯实PHP基础】PHP多进程-- pcntl_fork实现
    【工匠大道】升级Mac下的svn,解决命令行不能使用svn的问题
  • 原文地址:https://www.cnblogs.com/shyroke/p/7773250.html
Copyright © 2011-2022 走看看