需求:
1、用户注册(user_register.jsp)--》注册成功(UserRegister.action)--》显示注册信息(register_success.jsp)
2、用户登录(user_login.jsp)--》登录成功(UserLogin.action)--》显示用户名(login_success.jsp)
分析:
这里主要涉及struts2中对于多个类似的业务操作方法的封装。
效果:
针对需求1,用户注册:
针对需求2,用户登录:
实现:
user_register.jsp
Insert title here用户名: | |
---|---|
密码: | |
View Code
user_login.jsp
Insert title here用户名: | |
---|---|
View Code
UserAction.java
packagecom.amos.web.action;importcom.opensymphony.xwork2.ActionSupport;/*** @ClassName: UserAction
* @Description: 用户管理,将相关的action封装到一个类中
*@author: amosli
* @email:amosli@infomorrow.com
* @date Jan 8, 2014 1:06:00 AM*/
public class UserAction extendsActionSupport {private static final long serialVersionUID = -6275534406709255984L;privateString username;privateString password;publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}//用户注册
public String register() throwsException {return "toRegisterJsp";
}//用户登录
public String login() throwsException {return "toLoginJsp";
}
}
View Code
struts.xml
/p>
"http://struts.apache.org/dtds/struts-2.3.dtd">
user_struts.xml
/p>
"http://struts.apache.org/dtds/struts-2.3.dtd">
/register_success.jsp
/login_success.jsp
View Code
login_success.jsp
Insert title here用户名:
register_success.jsp
Insert title here用户名:密码:
代码分析:
代码的入口为两个jsp程序,user_register.jsp和user_login.jsp,因为原理大体相同,这里主要讲一下登录,注册上一篇文章已经讲过了。
首先,在地址栏里输入http://localhost:8080/struts2/user_login.jsp,表单的action动作为POST方式提交,对应的动作时是UserLogin.action;UserLogin在struts启动时struts.xml加载到内存中时已经将user_struts.xml 反射出来了。user_struts.xml中已经配置了,调用com.amos.web.action.UserAction中的login方法,然后将值再转发到login_success.jsp中,login_success.jsp,通过s标签进行取值并最终显示到浏览器中。
这里最主要的思想在于将登录和注册这两种相类似的业务,相关联的业务整合到一个action中。
用
户注册(user_register.jsp)--》注册成功(UserRegister.action)--》显示注册信息(register_success.jsp)
用户登录(user_login.jsp)--》登录成功(UserLogin.action)--》显示用户名(login_success.jsp)