Hi_Amos
坚持每天都在进步!!

需求:

1、用户注册(user_register.jsp)--》注册成功(UserRegister.action)--》显示注册信息(register_success.jsp)
2、用户登录(user_login.jsp)--》登录成功(UserLogin.action)--》显示用户名(login_success.jsp)

 

分析:

这里主要涉及struts2中对于多个类似的业务操作方法的封装。

 

效果

针对需求1,用户注册:

 

 

针对需求2,用户登录:

 

 

实现:

user_register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form name="register" action="/struts2/UserRegister" method="post">
        <table border="2" align="center">
            <caption>新用户注册</caption>
            <tr>
                <th>用户名:</th>
                <td><input name="username" id="username" type="text" /></td>
            </tr>
            <tr>
                <th>密码:</th>
                <td><input name="password" id="password" type="password" /></td>
            </tr>

            <tr>
                <td colspan="2" align="center"><input type="submit" value="提交"
                    width="120ppx" /></td>
            </tr>

        </table>
    </form>
</body>
</html>
View Code

 

user_login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form name="register" action="/struts2/UserLogin" method="post">
        <table border="2" align="center">
            <caption>用户登录</caption>
            <tr>
                <th>用户名:</th>
                <td><input name="username" id="username" type="text" /></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="提交"
                    width="120ppx" /></td>
            </tr>

        </table>
    </form>
</body>
</html>
View Code

 

UserAction.java

package com.amos.web.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @ClassName: UserAction
 * @Description: 用户管理,将相关的action封装到一个类中
 * @author: amosli
 * @email:amosli@infomorrow.com
 * @date Jan 8, 2014 1:06:00 AM
 */
public class UserAction extends ActionSupport {
    private static final long serialVersionUID = -6275534406709255984L;
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    // 用户注册
    public String register() throws Exception {

        return "toRegisterJsp";
    }

    // 用户登录
    public String login() throws Exception {
        return "toLoginJsp";
    }

}
View Code

 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 加载其他配置文件 -->
    <include file="config/user_struts.xml"></include>
</struts>

 

user_struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="user" namespace="/" extends="struts-default">
        <action name="UserRegister" class="com.amos.web.action.UserAction"
            method="register">
            <result name="toRegisterJsp" type="dispatcher">
            /register_success.jsp
            </result>
        </action>
        <action name="UserLogin" class="com.amos.web.action.UserAction"
            method="login">
            <result name="toLoginJsp" type="dispatcher">
            /login_success.jsp            
            </result>
        </action>
    </package>
</struts>
View Code

 

login_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
登录成功!
<hr>
用户名:<s:property value="username"/>
</body>
</html>

 

register_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"  %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
注册成功<br/>
<hr>
用户名:<s:property value="username" />
密码:<s:property value="password"/>
</body>
</html>

 

代码分析:

代码的入口为两个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)

posted on 2014-01-08 02:08  Hi_Amos  阅读(4290)  评论(0编辑  收藏  举报