天天看点

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......"

WebWork完成用户注册的例子

;

System.out.println("User="+user);

Connection conn = null;

Statement stmt = null;

try{                      //向数据库中添加用户

Class.forName("com.mysql.jdbc.Driver"

WebWork完成用户注册的例子

;

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('"

WebWork完成用户注册的例子

;

sb.append(user.getUsername());

sb.append("','"

WebWork完成用户注册的例子

;

sb.append(user.getPassword());

sb.append("','"

WebWork完成用户注册的例子

;

sb.append(user.getEmail());

sb.append("',"

WebWork完成用户注册的例子

;

sb.append(user.getAge());

sb.append("

WebWork完成用户注册的例子

"

WebWork完成用户注册的例子

;

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

WebWork完成用户注册的例子

roperty value="user.username"/><br>

Password:<ww

WebWork完成用户注册的例子

roperty value="user.password"/><br>

Email:<ww

WebWork完成用户注册的例子

roperty value="user.email"/><br>

Age:<ww

WebWork完成用户注册的例子

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="

WebWork完成用户注册的例子

http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="

WebWork完成用户注册的例子

http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="

WebWork完成用户注册的例子

http://java.sun.com/xml/ns/j2ee  

WebWork完成用户注册的例子

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" 

"

WebWork完成用户注册的例子

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

WebWork完成用户注册的例子

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脱胎换骨.

继续阅读