教你整合Struts2 + Hibernate

        上周写出来的登录注册,用的是框架版本是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就不贴上来了,相信大家也知道是怎么回事。运行服务器后图示效果见附件。

你可能感兴趣的:(apache,jsp,Hibernate,struts,MyEclipse)