上周写出来的登录注册,用的是框架版本是Struts2.0.11 Hibernate3.1,开发工具是MyEclipse。
使用在服务器端验证的方法。
在register.jsp页面中写入以下代码:
<s:form action="register">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit label="submit" align="center"></s:submit>
</s:form>
在result.jsp页面中加入以下代码:
<s:text name="username:"></s:text>
<s:property value="username"/><br>
<s:text name="password:"></s:text>
<s:property value="password"/>
web.xml中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
在index.jsp页面中加入一行JS或JAVA代码使其自动跳转到home.action
在struts.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>
<package name="struts2" extends="struts-default" namespace="/user">
<action name="register" class="action.RegisterAction">
<result name="success">/result.jsp</result>
<result name="input">/register.jsp</result>
</action>
<action name="home" class="action.HomeAction">
<result name="success">/register.jsp</result>
</action>
</package>
</struts>
HomeAction中直接return "success",在RegisterAction中代码如下:
package action;
/*
* by
* tuxiliang
* http://hi.baidu.com/oruja
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import vo.Person;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import dao.impl.PersonDAO;
@SuppressWarnings("serial")
public class RegisterAction extends ActionSupport {
private String username;
private String password;
PersonDAO person;
private List messages = new ArrayList();
public List getMessages() {
return messages;
}
public void setMessage(List messages) {
this.messages = messages;
}
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 execute()throws Exception
{
person = new PersonDAO();
List list = person.findByName(this.getUsername().trim());
if(list.isEmpty()){
Person user = new Person(this.getUsername(),this.getPassword());
person.save(user);
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession();
session.put("username",this.getUsername());
return "success";
}
else {
this.addFieldError("username", "the username is already registered!");
return "input";
}
}
@Override
public void validate() {
if(null==this.getUsername()||"".equals(this.getUsername().trim())){
this.addFieldError("username", "username required!");
}
else if(null==this.getPassword()||"".equals(this.getPassword().trim())){
this.addFieldError("password", "password required!");
}
}
}
另外还有一个struts.properties的文件,是为了防止报错,网上有解释,有关hibernate的映射文件以及PersonDAO就不贴上来了,相信大家也知道是怎么回事。运行服务器后图示效果见附件。