在Servlet代码中,使用HttpSession对象的方法setMaxInactiveInterVal(int)设置一个会话维持非活动状态的最大秒数来更改大小。
HttpSession是Java平台对session机制的实现规范。
1、session的过期时间设置有误2、设置或获取session有误
而我的问题出现在计算机名 和localhost上。其实两者都映射到127.0.0.1上在host上配置了,但是chrome和tomcat把它看成了不同的域了 session被卡了一节。
简单的代码 登录---->servlet处理-->处理成功-->设置session-->跳转到main.jsp
[html] view plaincopyprint?
<form class="form-signin form-horizontal" method="post" action="<%=basePath %>servlet/LoginServlet">
<div class="row">
<div class="span5">
<div class="control-group">
<label class="control-label" for="user_brchno">机构号:</label>
<div class="controls">
<input type="text" id="user_brchno" class="input-block-level typeahead" name="user_brchno" autocomplete="off" placeholder="请输入机构"></div>
</div>
<div class="control-group">
<label class="control-label" for="user_userno">柜员号:</label>
<div class="controls">
<input type="text" id="user_userno" class="input-block-level typeahead" autocomplete="off" name="user_userno" placeholder="请输入柜员号"></div>
</div>
<div class="control-group">
<label class="control-label" for="user_name">姓名:</label>
<div class="controls">
<input type="text" id="user_name" class="input-block-level typeahead" autocomplete="off" name="user_name" placeholder="请输入姓名"></div>
</div>
<div class="control-group">
<div class="controls">
<input type="submit" class="btn btn-small btn-primary " value="登录"></div>
</div>
</div>
</div>
</form>
登录处理servlet
[java] view plaincopyprint?
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8")
UserWrap userWrap = new UserWrap()
User user = new User()
HttpSession session = request.getSession(true)
boolean flag = false
try {
flag = UserWrap.login(session, request, user)
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
if (flag) {
session.setAttribute("user", user)
// RequestDispatcher rd = request.getRequestDispatcher("/main.jsp")
//rd.forward(request, response)
/*
**response.sendRedirect("http://localhost:8888/Type/main.jsp")
*/
response.sendRedirect("http://alan:8888/Type/main.jsp")
} else {
response.sendRedirect("http://localhost:8888/Type/index.jsp")
}
}
奇葩出现在我标记星号的那行 变大(居然变大也不行!!!!!)的那行代码(代码里不能上颜色啊!!!!),因为上下文环境为我计算机名http://alan:8888/Type/来对待的 所以对于http://localhost来说设置好的seesion对他没起作用,所以main.jsp永远得不得session.折腾了好久总算搞明白了 哈哈
main.jsp页面
[html] view plaincopyprint?
<%
String path = request.getContextPath()
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/"
User user = new User()
if (session.getAttribute("user") == null) {
response.sendRedirect(basePath)
} else {
user = (User) session.getAttribute("user")
}
%>
什么意思,
如果servlet中用session 那么,
HttpSession session=request.getSession() request请求得到回话session
session.setAttribute(String arg, Object obj)在session会话中放一个键-值对 ,键为String类型的arg , 值为 Object类型(任意类型) obj
session.getAttribute(String arg), 从session中取 值,通过键arg--》得到值
在详细就查看servlet的API 帮助文档
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)