【发布时间】:2015-04-25 17:31:47
【问题描述】:
我在 servlet 中成功创建了会话,我可以将会话/会话属性获取到 jsp,但不能在端点类中。我想在端点类中获取会话信息。请帮我解决这个问题。
我在 Eclipse 中使用 maven,并在 appengine-web.xml 中启用了会话
我还阅读了关于此的article,除了如何启用会话我什么都不懂。
这个servlet是用来检查是否已经有一个会话
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public FirstServlet () {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
service(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
service(request, response);
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
HttpSession session=request.getSession(false);
if (session != null) {
String name = session.getAttribute("name");
// do something
} else {
// do something
}
}
}
如果会话不存在,则使用此 servlet 创建会话
public class SeccondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SeccondServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
service(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
service(request, response);
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
request.getRequestDispatcher("login.html").include(request, response);
String name = request.getParameter("name");
HttpSession session=request.getSession();
session.setAttribute("name", name);
// do something
}
}
这是我的端点 api 类(Google Cloud Endpoints)
@Api(
name = "myapi",
version = "v1",
clientIds = "given client ids")
public class MyApi{
@ApiMethod(name = "name", path = "name", httpMethod = "post")
public List<String> getUser( HttpServletRequest servletReq) {
HttpSession session = servletReq.getSession(false);
List<String> name= new ArrayList<String>();
if(session == null) {
userName.add("no Name");
} else {
name.add((String)session.getAttribute("name"));
}
return name;
}
即使我创建了会话并且我可以获得会话属性,这里仍然是“名称”
【问题讨论】:
-
你能再清楚一点,端点是什么意思吗?你使用谷歌云端点或普通的旧 servlet 或任何 Mvc 框架,如 Spring 等
-
是的,我正在使用谷歌云端点。我想在谷歌云端点类中获取会话属性。
标签: java google-app-engine session