[Ken原创] Struts里的session用法。

昨天晚上突然遇到一个莫名其妙的问题,可惜因为熄灯没解决好,导致一夜没睡好觉,呵呵,有点过分了…… 于是今天早上就开始捉摸这事儿。

来总结一下:
在Strtus的Model部分,即Bean的部分,以登录模块为例,我试验的代码:
Success时,
//Struts Bean方法里session的用法
String login_name = rs.getString("true_name");
//返回和请求相关的session
HttpSession session = request.getSession();
//把truename的属性值login_name保存在session对象中
session.setAttribute("truename", login_name);


False时,

LoginFalse.loginFalse(request);
即:调用了LoginFalse类里面的俄静态方法,当然是自己写的,最近刻意养成把所有的东西给封装的习惯,感觉不错。LoginFalse里面的代码,
public static void loginFalse(HttpServletRequest request) {
String login_false = "Your username or password is wrong!!!";
HttpSession session = request.getSession();
session.setAttribute("loginfalse", login_false);
}
在login.jsp的代码,
<%String loginwrong = (String) session.getAttribute("loginfalse");
if (loginwrong != null) { %>
<%=loginwrong%> 
<%
//销毁session
session.removeAttribute("loginfalse");
}
session.removeAttribute("truename"); %>
每页需要用 <%@ include file="inc/logout.inc" %> 来显示用户的true_name以及logout功能实现。
logout.inc代码,
<%String u = (String) session.getAttribute("truename");%>
<%=u%><br/>
<%if (u == null) {%>
<logic:forward name="g_login"/>
<%}%>
<html:link page="/login.jsp">logout</html:link>
还有LoginForm里面的not required处理就省略了。
自我感觉这次的问题就出现在,不知道Struts里面scope定义session的话,在Bean里面不人为写session时,struts会自己给个getSession();
还有跟以前在JSP-JSP里面的session有点不同,就在这:
HttpSession session = request.getSession();

session.setAttribute之前必须得注意写上这一行。

你可能感兴趣的:(jsp,bean,struts,项目管理,asp)