WebWork完成用户注册的例子

本文介绍了一个基于WebWork框架的用户注册系统实现过程。包括register.jsp页面收集用户信息、RegisterAction处理表单数据并调用数据库接口进行存储,以及register-result.jsp显示注册结果。深入分析了WebWork框架下Action、Model和View的交互机制。
功能描述:一个用户注册页面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脱胎换骨.
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值