最简单的 Spring2.0 实例

来源:互联网 发布:2014年上证指数数据 编辑:程序博客网 时间:2024/04/28 05:07

入门实例
下载相关软件struts2,hibernate3,spring2,mySql5,Tomcat6;并进行相应的配置。
1. 搭建环境:
1) struts2:拷贝struts2的lib目录下的ognl,struts2-core,freemarker,comms-logging,xwork;jar包到网站的lib目录下。为了整合spring还应该将struts2-spring-plugin.jar包也拷贝到lib目录下。
2) hibernate:拷贝hibernate3,等到网站lib目录。
3) spring2:将spring目录dist下的spring.jar拷贝到网站lib目录。
4) 拷贝驱动程序(mysql-connector-java-5.0.8-bin.jar)到网站的lib目录。
5) 创建数据库(create database stud;),创建测试用表(create table user(username varchar(50),password varchar(50));)。
2. 目录结构(MyEclipse)


3. 配置文件
1) web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 
   
    <filter>
     <!-- 过滤器名struts2 -->
     <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><!-- 表示默认系统页面为login.jsp -->
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
   
     <!-- -加载spring 开始 -->
    <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
    <!-- -加载spring 完成-->
</web-app>
2) applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="_userDao" class="org.dql.dao.impl.UserDao"></bean>
   
    <!-- -登陆相关 -->
    <bean id="loginService" class="org.dql.services.impl.LoginService">
        <property name="userDao">
            <ref local="_userDao"/>
        </property>
    </bean>
    <!-- scope="prototype 表示请求是独立的不相互干扰,线程安全的 -->
    <bean id="loginAction" class="org.dql.action.LoginAction" scope="prototype">
        <property name="loginService">
            <ref local="loginService"/>
        </property>
    </bean>
    <!-- -登陆相关 -->
   
    <!-- 注册相关 -->
    <!-- scope="prototype 表示请求是独立的不相互干扰,线程安全的 -->
    <bean id="registerAction" class="org.dql.action.RegisterAction" scope="prototype">
        <property name="registerService">
            <ref local="registerService"/>
        </property>
    </bean>
    <bean id="registerService" class="org.dql.services.impl.RegisterService">
        <property name="userDao">
            <ref local="_userDao"/>
        </property>
    </bean>
    <!-- 注册相关 -->
</beans>
3) hibernate.cfg.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">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>
<session-factory>
 <property name="connection.username">root</property>
 <property name="connection.url">
  jdbc:mysql://127.0.0.1/stud
 </property>
 <property name="dialect">
  org.hibernate.dialect.MySQLDialect
 </property>
 <property name="myeclipse.connection.profile">MySqlDriver</property>
 <property name="connection.password">manage</property>
 <property name="connection.driver_class">
  com.mysql.jdbc.Driver
 </property>
 <mapping resource="org/dql/entitys/User.hbm.xml" />
</session-factory>
 
</hibernate-configuration>
4) 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>
   <constant name="struts.i18n.encoding" value="gbk"></constant>
   <package name="struts2" extends="struts-default">
       <action name="login" class="loginAction">
           <result name="input">/login.jsp</result>
           <result name="success">/out_login.jsp</result>
       </action>
       <action name="register" class="registerAction">
           <result name="input">/register.jsp</result>
           <result name="success">/out_register.jsp</result>
       </action>
    </package>
</struts>
5) struts.properties
struts.locale=zh_CN
struts.i18n.encoding=UTF-8 
struts.objectFactory=spring
4. 持久层
1) HibernateSessionFactory.java
package org.dql.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
  
    private static String CONFIG_FILE_LOCATION = "/org/dql/hibernate/hibernate.cfg.xml";
 private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private  static Configuration configuration = new Configuration();
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;
 static {
     try {
   configuration.configure(configFile);
   sessionFactory = configuration.buildSessionFactory();
  } catch (Exception e) {
   System.err
     .println("%%%% Error Creating SessionFactory %%%%");
   e.printStackTrace();
  }
    }
    private HibernateSessionFactory() {
    }
 
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
  if (session == null || !session.isOpen()) {
   if (sessionFactory == null) {
    rebuildSessionFactory();
   }
   session = (sessionFactory != null) ? sessionFactory.openSession()
     : null;
   threadLocal.set(session);
  }
        return session;
    }
 
 public static void rebuildSessionFactory() {
  try {
   configuration.configure(configFile);
   sessionFactory = configuration.buildSessionFactory();
  } catch (Exception e) {
   System.err
     .println("%%%% Error Creating SessionFactory %%%%");
   e.printStackTrace();
  }
 }
 
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);
        if (session != null) {
            session.close();
        }
    }
 public static org.hibernate.SessionFactory getSessionFactory() {
  return sessionFactory;
 }
 
 public static void setConfigFile(String configFile) {
  HibernateSessionFactory.configFile = configFile;
  sessionFactory = null;
 }
 
 public static Configuration getConfiguration() {
  return configuration;
 }
}
2) User.java
package org.dql.entitys;
public class User {
     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;
 }
    
}
3) 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="org.dql.entitys.User" table="User" lazy="true">
  <id name="username" type="string" column="username">
  </id>  
  <property type="string"  name="password" column="password" />
 </class> 
</hibernate-mapping>
4) IUserDao.java
package org.dql.dao.interfaces;
import org.dql.entitys.User;
public interface IUserDao {
    public boolean addUser(User user);
    public boolean checkUser(String username,String password);
}
5) UserDao.java
package org.dql.dao.impl;
import java.util.List;
import org.dql.dao.interfaces.IUserDao;
import org.dql.entitys.User;
import org.dql.hibernate.HibernateSessionFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class UserDao implements IUserDao {
 public boolean addUser(User user) {
  Session session = null;
  Transaction transaction = null;
  try {
   session = HibernateSessionFactory.getSession();
   transaction = session.getTransaction();
   transaction.begin();
   session.save(user);
   transaction.commit();
   return true;
  } catch (Exception ex) {
   if (transaction != null)
    transaction.rollback();
  } finally {
   session.close();
  }
  return false;
 }
 @SuppressWarnings("unchecked")
 public boolean checkUser(String username, String password) {
  Session session = null;
  session = HibernateSessionFactory.getSession();
  String hql = "from User u where u.username = ? and u.password = ?";
  Query query = session.createQuery(hql);
  query.setParameter(0, username);
  query.setParameter(1, password);
  List list = query.list();
  if(list.size() > 0)
   return true;
  return false;
 }
}
5. 控制层
1) ILoginService.java
package org.dql.services.interfaces;
public interface ILoginService {
    public boolean isLogin(String username,String password);
}
2) IRegisterService.java
package org.dql.services.interfaces;
import org.dql.entitys.User;
public interface IRegisterService {
    public boolean addUser(User user);
}
3) LoginService.java
package org.dql.services.impl;
import org.dql.dao.interfaces.IUserDao;
import org.dql.services.interfaces.ILoginService;
public class LoginService implements ILoginService {
    private IUserDao userDao;
   
 public void setUserDao(IUserDao userDao) {
  this.userDao = userDao;
 }
 
 public boolean isLogin(String username, String password) {
  return userDao.checkUser(username, password);
 }
}
4) RegisterService.java
package org.dql.services.impl;
import org.dql.dao.interfaces.IUserDao;
import org.dql.entitys.User;
import org.dql.services.interfaces.IRegisterService;
public class RegisterService implements IRegisterService {
    private IUserDao userDao;
   
 public void setUserDao(IUserDao userDao) {
  this.userDao = userDao;
 }
 public boolean addUser(User user) {
  return userDao.addUser(user);
 }
}
6. 视图层
1) LoginAction.java
package org.dql.action;
import org.dql.services.interfaces.ILoginService;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    private ILoginService loginService;
   
 public void setLoginService(ILoginService loginService) {
  this.loginService = loginService;
 }
 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 execute() throws Exception {
  if(this.loginService.isLogin(username, password))
   return SUCCESS;
  else
   return INPUT;
 }
   
}
2) RegisterAction.java
package org.dql.action;
import org.dql.entitys.User;
import org.dql.services.interfaces.IRegisterService;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class RegisterAction extends ActionSupport {
 private User user;
 private IRegisterService registerService;
 private String repassword;
 
 public String getRepassword() {
  return repassword;
 }
 public void setRepassword(String repassword) {
  this.repassword = repassword;
 }
 public User getUser() {
  return user;
 }
 
 public void setUser(User user) {
  this.user = user;
 }
 public void setRegisterService(IRegisterService registerService) {
  this.registerService = registerService;
 }
 @Override
 public void validate() {
  if(!repassword.equals(user.getPassword()))
  {
   this.addFieldError("repassword", "密码输入不一致。");
  }
 }
 public String execute() throws Exception {
  if(registerService.addUser(user))
   return SUCCESS;
  return INPUT;
 }
}
3) login.jsp
<%@ page language="java" contentType="text/html;charset=gbk"
 pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="login" theme="simple"> 
    <s:actionerror/>
 <s:fielderror></s:fielderror><br>
 <s:textfield name="username" ></s:textfield><br>
 <s:password name="password"></s:password><br>
 <s:submit value="登陆"><s:reset value="重置"></s:reset></s:submit>
</s:form>
4) out_login.jsp
<%@ page language="java" contentType="text/html;charset=gbk"
 pageEncoding="GBK"%>
 <%@ taglib prefix="s" uri="/struts-tags" %>
 username is :${requestScope.username}
 <br>
 password is :<s:property value="password"/>
5) register.jsp
<%@ page language="java" contentType="text/html;charset=gbk"
 pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:fielderror></s:fielderror>
<s:form theme="simple" action="register">
 <div>
  姓名:<s:textfield name="user.username"></s:textfield>
  <br>
  密码:<s:password name="user.password"></s:password>
  <br>
  确认密码:<s:password name="repassword"></s:password>
  <br>
  <s:submit value="提交"></s:submit>
  <s:reset value="重置"></s:reset>
 </div>
</s:form>
6) out_register.jsp
<%@ page language="java" contentType="text/html;charset=gbk"
 pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
username:<s:property value="user.username"/>
password:<s:property value="user.password"/>

原创粉丝点击