论坛首页 Java企业应用论坛

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

浏览 7729 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-17  
昨天晚上突然遇到一个莫名其妙的问题,可惜因为熄灯没解决好,导致一夜没睡好觉,呵呵,有点过分了…… 于是今天早上就开始捉摸这事儿。

来总结一下:
在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之前必须得注意写上这一行。
   发表时间:2007-10-17  
LZ是不是从ASP转过来的,呵呵INC是ASP常用的经典扩展名啊。
其实在JSP里,include一个INC我感觉不是特别好,加上一些逻辑判断,让JSP页面支离破碎的。
你可以做一个简单的Filter,来过滤。这样使用Session,Request,Response都可在Java代码里去实现了,调试与管理也方便多了
0 请登录后投票
   发表时间:2007-10-17  
同意楼上的,用filter来做更好,而且错误信息也没有必要放到session里,像这种错误信息一般只使用一次,你放到request里forward下去就行了,比你set了再remove安全的多

关于你封装的那个方法:我在做项目的时候是不允许把这种功能封装在调用类外的方法里的,你在这里将request/session带出了他应该存在的范围,会对维护造成一些问题,而且你方法名里也没明确说明里面会对session进行操作,我们也有一些操作session的工具类,但那些类都是用于操作真正的session级别(有session就一直起作用的属性)的属性信息的,你这个信息还算不上这种级别的东西。
0 请登录后投票
   发表时间:2007-10-19  
既然都用了struts,还搞这一堆jsp代码作甚,05年的时候协助过一个项目,也是这种风格,头疼
0 请登录后投票
   发表时间:2007-11-12  
不是吧。。。怎么这样做啊。。。太麻烦了吧。楼上说的用filter不是很好吗。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics