搭建环境如下:
操作系统:win7 64bit
JDK: 1.7.0_67 for 64bit
MyEclipse:MyEclipse 2014
MySql: mysql server 5.0
JDBC: mysql-connector-java-5.1.18-bin.jar
structs: structs-2.3.31
Hibernate:hibernate-release-4.3.10.Final
Spring: spring-framework-4.0.0.RELEASE
1、
(1) 首先要完成JDK配置正确,myEclipse能正常运行。
(2) 在MyElipse下创建Dynamic Web Project(这个选项在File-new-others-web下),输入正确的工程名称如SSHtest,设置工程的workspce,取消EARmembership的勾选,其他不变,点击Finish.
(3) 拷贝相应的structs包到工程下,首先将structs-2.3.31->app->WEB-INF->lib下的13个jar包拷贝到新建工程的WebRoot->WEB-INF->lib目录下;在将structs-2.3.31->app->WEB-INF目录下的web.xml中的:
代码段复制到WebRoot->WEB-INF下的web.xml文件中。
2、建立工程代码
首先在工程下创建相应的包有:
com.zwl.ssh.action
com.zwl.ssh.forms
com.zwl.ssh.service
com.zwl.ssh.serviceImp
以上包名可以自定义。
2.1 structs.xml
在工程->src下创建structs.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<package name="zwl" extends="struts-default">
<action name="register" class="com.zwl.ssh.action.RegisterAction">
<result name="input">/Register.jsp</result>
<result name="success">/Success.jsp</result>
<result name="error">/Fail.jsp</result>
</action>
</package>
</struts>
该xml文件用于控制用户逻辑结果
2.2 创建相应的代码
在com.zwl.ssh.action包下创建RegisterAction.java代码如下:
public class RegisterAction extends ActionSupport{
private static final long serialVersionUID=1L;
private UserForm user;
private UserManager userManager;
public UserForm getUser()
{
return user;
}
public void setUser(UserForm user)
{
this.user=user;
}
public UserManager getUserManager()
{
return userManager;
}
public void setUserManager(UserManager userManager)
{
this.userManager=userManager;
}
public String execute()
{
try {
userManager.regUser(user);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
该类主要是实现用户的Action的逻辑处理,并得到一定的返回信息,通过返回信息和已经定义在struct.xml文件中的Action映射信息,就可以得到相应的forword页面。
2.3 RegisterAction-validation.xml(验证文件,
在com.zwl.ssh.action内创建,名字定义与上面的类相互对应)。该xml文件主要用户对用户输入在JSP页面中的数据进行一定的校验。(相当于数据的前端限制)
<?xml version="1.0" encoding="GBK"?>
<!-- 版本不一致 选择下面两个的一个 -->
<!--
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
-->
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<!-- 添加对用户名的校验 -->
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{6,16})]]></param>
<message>用户名输入不合法,必须为长度在6~16中间的数字或字母</message>
</field-validator>
</field>
<!-- 添加对密码的校验 -->
<field name="user.password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[(\w{6,16})]]></param>
<message>密码输入不合法,必须为长度在6~16之间的数字或者字母</message>
</field-validator>
</field>
</validators>
2.4 UserForm.java
在com.zwl.ssh.forms报下创建该类,该类主要用于表示用户数据,有username,password,gender.
package com.zwl.ssh.forms;
public class UserForm {
private String username;
private String password;
private int gender;
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 int getGender()
{
return gender;
}
public void setGender(int gender)
{
this.gender=gender;
}
}
2.5 UserManager.java
在com.zwl.ssh.service包下创建该接口,该接口是定义了业务实现的方法。
public interface UserManager {
public void regUser(UserForm user);
}
2.6 UserManagerImpl.java
在包com.zwl.ssh.serviceImpl下创建该类,该类用于实现业务。
public class UserManagerImpl implements UserManager {
@Override
public void regUser(UserForm user) {
}
}
在Structs阶段可以暂时不实现数据的处理及存储过程。
2.7 三个主要的JSP页面
在WebRoot下分别创建Fail.jsp,Register.jsp, Success.jsp。主要说明Register.jsp,其他两个均为一般的文本输出页面不做解释。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>User Register Page</title>
</head>
<body>
<s:form action="register">
<s:textfield name="user.username" label="用户名"></s:textfield>
<s:password name="user.password" label="密码"></s:password>
<s:select list="#{'1':'男','0':'女'}" listKey="key" listValue="value"
name="user.gender" label="性别" value="1"></s:select>
<s:submit value="注册"></s:submit>
</s:form>
</body>
</html>
2.7最终的层次结构如下图,忽略下图中的com.zwl.ssh.beans和com.zwl.ssh.dao以及com.zwl.ssh.daoImpl包,便是本文中Structs的结构层次图。
- 运行结果