您的位置:首页 > 编程语言 > Java开发

Struts入门的一个例子

2010-04-18 19:35 253 查看
Struts入门的一个例子

一个实现用户登录的struts简单例子。功能非常简单,目的是演示struts各组件之间的关系及信息是怎样传递的。例子包含一个JSP页面,JSP页面包含用户名和密码登录信息,填写登录信息后点击登录按钮提交,服务器端判断填写的用户名和密码是否正确,并跳转回登录页面,反馈登录是否成功的信息。
创建环境:Eclipse3.2 + MyEclpise5.5 + jdk1.5 + struts1.2(环境搭建在此不做说明,请参考相关资料)
工程名称:SpringExp
目录结构:



创建步骤:
第1步:创建JSP登录页面,页面包含一个text标签,一个password标签和一个submit提交按钮,提交到的URL为/SpringExp/login.cmd。
第2步:创建存储用户登录信息的类User,User类继承自ActionForm。
第3步:创建控制器类LoginAction,继承自Action,用于完成对用户名和密码的校验,并跳转到登录页面。
第4步:在struts配置文件struts-config.xml中配置bean,action等信息。
第5步:在web.xml配置文件中设定struts信息。
各步骤涉及到的文件主要内容如下:
1、 JSP页面(登录首页)
文件:/jsp/ssh/login.jsp
<form action="/SpringExp/login.cmd" method="post">
用户名:<input type="text" name="username" value="${user.username}" /><br>
密码: <input type="password" name="password" value="${user.password}" /><br>
<input type="submit" name="method" value="提交" />
</form>
2、 ActionForm定义(User定义)
文件:cn/starup/ssh/struts/mylogin/bean/User.java
public class User extends ActionForm {
private String username = null;
private String password = null;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return this.username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return this.password;
}
}
3、 控制器Action定义
文件:cn/starup/ssh/struts/mylogin/action/LoginAction.java
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String forwardJsp = "login" ;
String username = ((User) form).getUsername();
String password = ((User) form).getPassword();
if(username == null || password == null){
request.setAttribute("msg", "请输入用户名和密码");
}else if("".equals(username) || "".equals(password)){
request.setAttribute("msg", "必须输入用户名和密码");
}else if("2010".equals(username) && "2010".equals(password)){
request.setAttribute("msg", "登录成功");
}else{
request.setAttribute("msg", "用户名填写错误");
}
request.setAttribute("user", (User)form);
return mapping.findForward("login");
}
}
4struts配置文件(struts-config.xml
<!—- 配置JavaBean user -->
<form-bean name="user"
type="cn.starup.ssh.struts.mylogin.bean.User">
</form-bean>
<!—- 登录时访问的URL,即JSP中提交时访问的URL -->
<action path="/login"
type="cn.starup.ssh.struts.mylogin.action.LoginAction" name="user">
<forward name="login" path="/jsp/ssh/login.jsp"></forward>
</action>
<!—- 初始登录页面 -->
<action path="/logintemp"
type="org.apache.struts.actions.ForwardAction"
parameter="/jsp/ssh/login.jsp" />
5web.xml配置文件
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
<!-- 映射到以cmd结尾的URL请求 -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.cmd</url-pattern>
</servlet-mapping>



上图中列出了各种资源之间的对应关系,按照图中编号说明如下:
1) 初始访问的登录页面,在struts配置文件中定义为ForwardAction,对应的JSP页面为/jsp/ssh/login.jsp。
2) JSP页面Form中的用户名和密码信息会由struts封装成ActionForm(实质上是JavaBean类),传递给控制器,JavaBean类在此即User的属性username和password是通过set方法注入的,因此要确保JSP页面标签属性name的值要和User类对应属性的set方法一致,否则User对象的值得不到正确设置。
注意:JavaBean类方法的注入是和方法名相关的,而与具体的属性名字没有关系,比如在此定义User是如果username属性名改成name,set方法仍然是setUsername()也是可以的,但是为了名称上的一致性,最好是使set方法和属性名对应。
3) JSP页面Form表单提交的页面与struts配置文件中Action定义的对应关系,login对应的控制器类为:cn.starup.ssh.struts.mylogin.action.LoginAction。
4) Struts配置文件中定义的bean类与登录用户信息User类对应关系。
5) Action标签的name属性,其值为定义的form-bean类,把页面向服务器提交的信息封装到此类中提交给控制器。
6) 把用户登录信息User对象保存在request范围内,传递到跳转到的JSP页面(登录页面),在JSP页面中通过${}把信息显示展示出来。
7) 控制器返回的页面与struts配置文件控制器定义中<forward>标签对应的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: