WebWork完成用户注册的例子

功能描述:一个用户注册页面register.jsp,用户可以在这个页面里输入用户注册的基本信息(例如:姓名、密码、Email等),输入完成提交表单,执行用户注册的Action,执行成功返回成功提示的页面(register-result.jsp)并将注册的信息输出。
模型:User.java
控制:RegisterAction.java
视图:register.jsp、register-result.jsp
配置:xwork.xml
User.java
package register;

public class User {
private String username;
private String password;
private String email;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}

public String toString(){
return "username=" + username
+ ";password=" + password
+ ";email=" + email
+ ";age=" + age;
}

}

RegisterAction.java
package example.register;

import com.opensymphony.xwork.Action;
import java.sql.*;
import register.User;

public class RegisterAction implements Action{
private User user = new User();

public User getUser(){
return this.user;
}

public String execute(){
System.out.println("Start execute......" ;
System.out.println("User="+user);
Connection conn = null;
Statement stmt = null;
try{                      //向数据库中添加用户
Class.forName("com.mysql.jdbc.Driver" ;
String url = "jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&characterEncoding=GBK";
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO usertable VALUES('" ;
sb.append(user.getUsername());
sb.append("','" ;
sb.append(user.getPassword());
sb.append("','" ;
sb.append(user.getEmail());
sb.append("'," ;
sb.append(user.getAge());
sb.append(" " ;
stmt.executeUpdate(sb.toString());
}catch(Exception e1){
e1.printStackTrace();
}finally{
try{
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
}catch(Exception e2){
e2.printStackTrace();
}

}
return SUCCESS;
}

}

register.jsp

<title>Register Example</title>

<table border=0 width=97>
<tr><td align="left">
<form name="register" action="register.action" method="post">
Username:<input type="text" name="user.username"><br>
Password:<input type="text" name="user.password"><br>
Email:<input type="text" name="user.email"><br>
Age:<input type="text" name="user.age"><br>
<input type="submit" name="Submit"><br>
</form>
</td></tr>
</table>



register-result.jsp
<%@ taglib prefix="ww" uri="webwork" %>

<title>Register result</title>

<table border=0 width=97>
<tr>
<td align="left">
Congratulation,your register success!<p>
Username:<ww roperty value="user.username"/><br>
Password:<ww roperty value="user.password"/><br>
Email:<ww roperty value="user.email"/><br>
Age:<ww roperty value="user.age"/><br>
</td>
</tr>
</table>



web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns=" ::URL:: http://java.sun.com/xml/ns/j2ee"  xmlns:xsi=" ::URL:: http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation=" ::URL:: http://java.sun.com/xml/ns/j2ee   ::URL:: http://java.sun.com/xml/ns/j2ee /web-app_2_4.xsd">
<display-name>
TestRegister</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
  <servlet-name>webwork</servlet-name>
  <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>webwork</servlet-name>
  <url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
  <taglib-uri>webwork</taglib-uri>
  <taglib-location>/WEB-INF/lib/webwork-2.2.1.jar</taglib-location>
</taglib>
</web-app>

xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" 
" ::URL:: http://www.opensymphony.com/xwork/xwork-1.0.dtd"><xwork>
 <!-- Include webwork defaults (from WebWork-2.1 JAR). -->
 <include file="webwork-default.xml" />
 <!-- Configuration for the default package. -->
 <package name="default" extends="webwork-default">
   <!-- Default interceptor stack. --> 
    <default-interceptor-ref name="defaultStack" /> 
<action name="register" class="example.register.RegisterAction">
<result name="success" type="dispatcher">
<param name="location">register-result.jsp</param>
</result>
</action>
</package>
</xwork>

一些应该注意的地方:
1.Action里最好不要实现业务代码,Action的主要功能是提供从请求中取得参数的值,转化成相应的模型,再将模型传递给执行业务操作的对象,比如:将注册的用户信息存储到数据库中,由业务对象执行业务操作,再返回执行的结果.
2.执行<ww roperty value="user.username"/>,Ognl会根据value的值"user.username"去分别调用RegisterAction类的getUser()和User类的getUsername()方法,即:getUser().getUsername(),取得的数据就是前面注册页面输入的用户名。
3.xwork.xml中的<interceptor-ref name="params"/>,interceptor-ref标签设置这个Action用到的拦截器,"params"引用的是配置文件中的<interceptor name="params" class="
com.opensymphony.xwork.interceptor.ParametersInterceptor"/>这个拦截器将在RegisterAction的execute()方法执行之前调用,作用是将request请求的参数通过表达式语言设置到相应RegisterAction的模型里.假设你在注册页面输入用户名“moxie”,提交表单ParametersInterceptor就会下面的操作:首先从请求中取得参数的名字和名字对应的值,分别为:“user.username”和“moxie”,根据这个名字,从OgnlValueStack中取得堆栈最上面的getUser().setUsername(“tracy”)操作,即取得RegisterAction对象的User模型,并设置username属性的值为“tracy”。
    Action是通过XWork的拦截器ParametersInterceptor从提交的表单中取得请求的参数和值,再通过OgnlValueStack来执行表达式,调用Action和模型里相应的get或set方法,将从请求中取得的值设置到模型中去.
  做完这个例子,对WebWork的理解又加深了一些,但距离随心所欲,为我所用还有很长的路要走,继续加油,但愿我的下一个项目可以通过使用WebWork脱胎换骨.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值