OA设计文档3
- 格式:doc
- 大小:91.50 KB
- 文档页数:5
第三部分,1,进一步完善struts的登陆功能模块
.1,上次我们进行到在jsp中输入用户名,然后在后台读取到了我们输入的用户名,
界面转到了一个空白的页面.
今天我们先来将登陆的结果提示做完,登陆后不再转向一个空白的页面,而是一个有意义的信息提示,登陆成功或者是登陆失败.
我们打开上次的StrutsTest项目
看到那个登陆的action----LoginAction.java
看到execute方法,这个方法的返回是一个ActionForward对象.
ActionForward对象是个struts中的一个转向类,它的作用是为了方便将一个jsp文件映射成用一个简单易懂字符串的名称来表示,然后可以直接调用这个名称而转到对应的jsp文件。
比如我们登陆成功后要返回到一个叫success.jsp的页面的进行提示.
我们就可以定义loginOk 来代表success.jsp文件。
然后在return时,return mapping.findForward("loginOk");如下
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
// TODO Auto-generated method stub
System.out.println("您的登陆用户名是:"+loginForm.getUserName());
//return null;
return mapping.findForward("loginOk");//改的这里
}
那么在哪里来定义loginOk 来代表success.jsp文件呢,是在struts的配置文件struts-config.xml 中定义的。
我们现在就来定义下。
打开struts-config.xml,大家还知道地方吧,在webroot/web-inf/下
看到如下地方
我们改下,在action的定义中加<forward name="loginOk" path="/success.jsp" />改后保存结果如下.
<action
attribute="loginForm"
name="loginForm"
path="/login"
scope="request"
type="com.xp1204.struts.action.LoginAction">
<forward name="loginOk" path="/success.jsp" />
</action>
这样我们就定义了loginOk代表success.jsp文件.
但是success.jsp文件现在还没有,那么我们要建立这个文件
在webroot点右键,new-jsp,名称输入success.jsp,创建后我们来修改下
第一步,记得把我们上次标准的jsp文件的那部分拷贝粘贴到这个文件,要养成这个好的习惯.
第二步,我们在body中间写:恭喜您,您已经成功登陆!,改后如下
代码我copy如下
<%@ include file="/util/checkSession.jsp" %>
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="/util/error.jsp" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>用户登陆成功提示</title>
</head>
<body>
恭喜您,您已经成功登陆!
</body>
</html>
第三步,保存,启动服务项目测试
这里注意点,改了struts-config.xml后,必须重现启动项目才能生效的.
在userName输入playboy,点提交,是不是出现了我们预计的效果
如果这步完成了,我们再进一步修改.
改成如下效果:
当输入用户名和密码都是admin时,我们提示成功.
否则我们提示登陆错误。
无论成功失败我们都要显示登陆的名称
这样我们就要在action的execute方法中写逻辑代码了,我们看到execute方法.
修改下,改后如下
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
// TODO Auto-generated method stub
System.out.println("您的登陆用户名是:"+loginForm.getUserName());
//记录登陆的用户名到会话中,一般登陆用户名在以后很多时候都会用到,所以我们用session会话来保存
request.getSession().setAttribute("username",loginForm.getUserNam e());
//检查是不是用户名和密码都是admin,如果是
if ("admin".equals(loginForm.getUserName()) &&
"admin".equals(loginForm.getPassword())){
request.setAttribute("loginStatus","恭喜您,登陆成功!");
}else{
request.setAttribute("loginStatus","对不起,登陆失败!");
}
return mapping.findForward("loginOk");
}
然后我们在打开success.jsp来修改body中的部分如下
登陆用户名是:<bean:write name="username"/><br>
登陆结果是:<bean:write name="loginStatus"/>
()
然后在再测试下,没有修改到struts-config.xml就不用重新启动项目
我们来看看测试效果
1,输入用户名和密码都是 admin和admin
2,输入其他的任意情况
结果是不是就是我们设计的!
这里主要有两个点,是最基本的,大家要搞清楚。
一个是action中转向的设置。
<forward name="loginOk" path="/success.jsp" />
然后调用
return mapping.findForward("loginOk");
一个是action的变量或对象在保存
request.getSession().setAttribute("username",loginForm.getUserNam
e());
然后在jsp中用struts标签的显示.
<bean:write name="username"/>
我们对后面一点加深下,我们显示一个日期看看.
在action中加一句
request.setAttribute("nowDate",new Date());
然后在jsp中
<bean:write name="nowDate"/>看看效果
理解下上面的内容吧
没问题了我们继续……….。