配置Struts2+Hibernate

本文介绍了一个使用Struts2和Hibernate整合的简单示例项目,包括配置文件详解、核心Java类实现及JSP页面展示。项目通过Struts2进行页面请求处理,并利用Hibernate完成数据库操作。

一、项目结构


二、配置文件

1.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
        id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  
  <!-- struts核心配置文件 -->
  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
       
        <init-param>  
       		 <param-name>config</param-name>
                <param-value>
                       classpath:struts.xml,struts-default.xml,struts-plugin.xml,struts.xml
            </param-value>
    	</init-param>  
    	
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
   <!-- struts核心配置文件 结束-->
  
</web-app>

2.struts.xml

<!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"/> 
     <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <!-- struts2的action必须放在一个指定的包空间下定义 -->
    <package name="user" extends="struts-default">
    <!--name是前台通过那个地址访问到这个Action, 如果不写method 那么默认只会在execute方法中执行 -->
    <!-- 地址栏访问login 会进入到com.lei.action.UserLoginAction这个类里面的login的方法 -->
        <action name="login" class="com.lei.action.UserLoginAction" method="login">
        <!-- 定义处理结果字符串和资源之间的映射关系 -->
            <result name="success">welcome.jsp</result>
            <result name="error">login.jsp</result>
        </action>
        
        <action name="regist" class="com.lei.action.UserLoginAction" method="regist">
        <!-- 定义处理结果字符串和资源之间的映射关系 -->
            <result name="success">show.jsp</result>
            <result name="error">regist.jsp</result>
        </action>
    </package>
</struts>


3.hibernate.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">123456</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="person">true</property>
        <mapping resource="mapping/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

4.User.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.lei.entity.User" table="user">
        <!--  在User里面 id 的set 和 get 方法里 也要设置为Integer类型的,不然会报错 -->
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="username" column="username"  type="java.lang.String" length="20" />
        <property name="password" column="password"  type="java.lang.String" length="20"/>
 
    </class>
</hibernate-mapping>

5.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Struts</groupId>
  <artifactId>struts</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>struts Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- 添加struts2的依赖 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.8</version>
	   </dependency>
	<!-- 添加hibernate的依赖 开始--> 
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
  
   <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.8.Final</version>
   </dependency>
       <!-- 添加hibernate的依赖  结束 -->
   
     <!-- mysql数据库的驱动包 -->
    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
      </dependency>
    
  </dependencies>
  
  
  <!-- 配置项目名,即在浏览器访问时输入的项目名称 -->
  <build>
    <finalName>struts2</finalName>
  </build>
</project>


三、java程序

1.User

package com.lei.entity;

 
public class User {  
      
    private Integer id;  
    private String username;  
    private String password;  
    private String nick;
    
    
    
    public String getNick() {
		return nick;
	}
	public void setNick(String nick) {
		this.nick = nick;
	}
	public Integer getId() {  
        return id;  
    }  
    public void setId(Integer id) {  
        this.id = id;  
    }  
    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;  
    }
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + ", nick=" + nick + "]";
	}  
    
  
}  

2.UserLoginAction.java

package com.lei.action;

import com.opensymphony.xwork2.ActionSupport;
import com.lei.entity.User;
import com.lei.service.UserService;
import com.opensymphony.xwork2.ActionContext;

public class UserLoginAction extends ActionSupport
{
	private static final long serialVersionUID = 1L;
	private String username;
    private String password;

    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 login() throws Exception
    {
    	
        if (getUsername().equals("123")
                && getPassword().equals("123") )
        {
            ActionContext.getContext().getSession().put("username" , getUsername());
            ActionContext.getContext().getSession().put("password" , getUsername());
            return SUCCESS;
        }
        else
        {
            return ERROR;
        }
    }
    
    public String user_login(){
    	return SUCCESS;
    	
    }
    public String regist(){

    	String username = getUsername();
    	String password = getPassword();
    	User user = new User();
    	user.setUsername(username);
    	user.setPassword(password);
    	
    	UserService service = new UserService();
    	service.regist(user);
    	System.out.println(user);
		return ERROR;
    }

}

3.HibernateUtil.java

package com.lei.utils;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
        	
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    
    public static void shutdown() {
        getSessionFactory().close();
    }
}

4.UseDao.java

package com.lei.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;

import com.lei.utils.HibernateUtils;

public class UserDao {
	
	
	private Session session = HibernateUtils.getSessionFactory().openSession();
	/**
	 * 存储或更新
	 * @param entity
	 */
	public <T> void saveOrUpdate(T entity){
		session.beginTransaction();
		
		session.saveOrUpdate(entity);
		session.getTransaction().commit();
	}
	
	/**
	 * 删除
	 */
	public <T> void delete(T entity){
		session.delete(entity);
		session.getTransaction().commit();
	}
	
	@SuppressWarnings("unchecked")
	public <T> List<T> getEntitys(Class<T> entity){
		/**
		 * 查询语句,返回list集合
		 */
		Criteria criteria = session.createCriteria(entity);
		
		return criteria.list();
		
	}
	
	
}

四、JSP页面

1.login.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!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>struts2-Demo-登录界面</title>
</head>
<body>
    <p>struts2-Demo-登录界面</p>
    <form action="login" method="post">
        name:<input type="text" name="username" />
        password<input type="password" name="password" />
        <input type="submit" value="登录" />
    </form>
</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值