spring 普通類獲取四大作用域request、applicationContext、session、page


幾乎所有web應用容器都提供了四種類似Map的結構:application session request page,Jsp或者Servlet通過向着這四個對象放入數據,從而實現Jsp和Servlet之間數據的共享。

application:整個應用  對應servlet中ServletContext

session:會話    對應servlet中HttpSession

request:一次請求  對應servlet中的HttpServletRequest

page:當前頁面

在使用spring時,經常需要在普通類中獲取session,request等對像.
比如一些AOP攔截器類,在有使用struts2時,因為struts2有一個接口使用org.apache.struts2.ServletActionContext即可很方便的取到session對像.
用法:ServletActionContext.getRequest().getSession();
但在單獨使用spring時如何在普通類中獲取session,reuqest呢?
其實也是有辦法的.

在Java web 項目中
首先要在web.xml增加如下代碼:

 <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
 </listener>

 

接着在普通bean類中:

@Autowired  
private HttpSession session;  
  
@Autowired  
private HttpServletRequest request;  



即可,在類中使用session對像了,是不是很方便呢..
之所以要寫出來是因為目前網上關於這個的用法,都是用什么寫個lister再把session保存起來,太麻煩了.
spring這么強大的框架,當然他們早也想到了.所以才有了我們這么方便的使用方法.

 

 

當前加了上面的listener后也可以使用代碼的方式獲取reuqest對像

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

 

或者在普通Java程序中 可實現HttpServlet 

public class StartApplicationService  extends HttpServlet

ServletContext application = getServletConfig().getServletContext();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM