1.spring得到servletContext,這個和session沒有什么關系,上下文可以說是一個session容器,一個上下文可以有多個會話session
在web.xml中有以下配置后。加入spring對上下文的監聽,
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在后台用一下代碼就可以得到javax.servlet.ServletContext
ContextLoader.getCurrentWebApplicationContext().getServletContext()
2.cxf得到session的方法,這個僅僅是為了測試每次webservice請求session不一樣
package com.gaeainfo.tclgb.ws; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionContext; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import org.apache.cxf.transport.http.AbstractHTTPDestination; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.springframework.stereotype.Component; import org.springframework.web.context.ContextLoader; @Component(value="loginManagerWs") public class UserManagerWebServiceImpl implements UserManagerWebService { //會自動注入,配置了cxf監聽之后 @Resource private WebServiceContext context; @Override public String showUserInfo() { /*String userName = (String) session.getAttribute("userName"); String depName = (String) session.getAttribute("depName"); Document doc = DocumentHelper.createDocument(); Element elt = doc.addElement("root").addElement("userName").addText(userName).addElement("depName").addText(depName); String result = doc.asXML();*/ MessageContext ctx = context.getMessageContext(); HttpServletRequest request = (HttpServletRequest) ctx.get(AbstractHTTPDestination.HTTP_REQUEST); System.out.println(request.getSession().getId()); return ""; } }