struts2+spring+hibernate s2sh半注解结合方式框架搭建开发

来源:互联网 发布:设计模型软件下载 编辑:程序博客网 时间:2024/06/06 14:01
struts2+spring+hibernate  s2sh半注解结合方式框架搭建开发
1.s2sh结合,需要配置web.xml,struts.xml,applicationContext.xml,常用半注解方式结合(bean之类的用注解,路径跳转使用注解),本案例最主要的是搭建环境,然后有一个查询数据库。
2.新建一个web工程,导入jar包
web.xml配置spring 和struts
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" 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_3_0.xsd"><!-- 加载spring配置文件 -->  <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>            classpath*:applicationContext*.xml        </param-value>    </context-param>        <listener>     <listener-class>         org.springframework.web.context.ContextLoaderListener     </listener-class> </listener> <!-- struts2 的配置 --> <filter>  <filter-name>struts2</filter-name>  <filter-class>  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  </filter-class>  </filter>    <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <display-name></display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>
2.applicationContext.xml配置扫描器,hibernate数据源和事务,bean之类的用注解
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="            http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context.xsd            http://www.springframework.org/schema/aop            http://www.springframework.org/schema/aop/spring-aop.xsd            http://www.springframework.org/schema/tx            http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 使用 annotation --><context:annotation-config />   <!-- 使用 annotation 自动注册bean,并检查@Controller, @Service, @Repository注解已被注入 --> <context:component-scan base-package="com.zl.test1" /><!-- 数据库配置 --><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://localhost:3306/ssh"></property><property name="username" value="root"></property><property name="password" value="tiger"></property></bean><!-- sessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><!-- 可以自动创建数据库表(create),不创建(none) --><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 包扫描的方式加载注解类(推荐) --><property name="packagesToScan"><list><value>com.zl.test1</value></list></property></bean><!--JDBC事务管理器,根据你的情况使用不同的事务管理器,如果工程中有Hibernate,就用Hibernate的事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource"><ref bean="dataSource" /></property></bean><!-- 用注解来实现事务管理 --><tx:annotation-driven transaction-manager="transactionManager" /></beans>
3.struts.xml配置把对象交给spring管理,路径跳转使用注解
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <!-- 开启使用开发模式,详细错误提示 -->    <constant name="struts.devMode" value="false" />    <!-- 将对象交给spring管理 -->    <constant name="struts.objectFactory" value="spring" />    <!-- 指定资源编码类型 -->    <constant name="struts.i18n.encoding" value="UTF-8" /> <!-- 指定每次请求到达,重新加载资源文件 -->    <constant name="struts.i18n.reload" value="false" />    <!-- 指定每次配置文件更改后,自动重新加载 -->    <constant name="struts.configuration.xml.reload" value="false" />    <!-- 默认后缀名 --><!--     <constant name="struts.action.extension" value="do,action,jhtml,," /> --><!-- Struts Annotation --><!--     <constant name="actionPackages" value="com.test1"/> --></struts>    
4.view层:设计一个jsp界面: 调用loginAction类下的login方法
  <s:form action="loginAction!login">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="s" uri="/struts-tags"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <body>         <s:form action="loginAction!login">              <s:textfield name="user.userName" label="userName"></s:textfield>              <s:textfield name="user.passWord" label="passWord"></s:textfield>              <s:submit value="login"></s:submit>         </s:form>  </body>  </body></html>
5.controller层:
package com.zl.test1.action;import javax.annotation.Resource;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwork2.ActionSupport;import com.zl.test1.dao.IUserDao;import com.zl.test1.model.User;/** *  * @类名称:LoginAction * @类描述:用户控制器的实现 * @创建人:zenglong * @创建时间:2016-8-3 上午9:51:41 * @version 1.0 */@Action(value = "loginAction", results = {@Result(name = "loginSuccess", location = "/loginSuss.jsp"),@Result(name = "loginFailer", location = "/loginFailer.jsp") })public class LoginAction extends ActionSupport {private static final long serialVersionUID = -2266695172069461659L;@Resourceprivate IUserDao userDao;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String login() {boolean flag = userDao.isExitByNameAndPass(user);if (flag) {System.out.println("suss");return "loginSuccess";}System.out.println("fail");return "loginFailer";}}
6.DAO层:
package com.zl.test1.dao.impl;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import org.springframework.stereotype.Repository;import com.zl.test1.dao.IUserDao;import com.zl.test1.model.User;import com.zl.test1.util.MyHibernateDaoSupport;/** *  * @类名称:UserDaoImpl * @类描述: 用户控制dao实现数据库操作接口实现 * @创建人:zenglong * @创建时间:2016-8-3 上午9:47:47 * @version 1.0 */@Repository("userDao")public class UserDaoImpl extends MyHibernateDaoSupport implements IUserDao {public void addUser(User user) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();session.save(user);try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();}public void delUser(int userId) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();User u = new User(userId);session.delete(u);try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();}public void updateUser(User user) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();session.update(user);try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();}public List<User> selectUser() {List<User> users = new ArrayList<User>();Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();List list = session.createQuery("From User").list();for (Iterator iterator = list.iterator(); iterator.hasNext();) {User u = (User) iterator.next();users.add(u);}try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return users;}public User getUserByUserId(int userId) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();// load 是说明数据库中一定存在这条记录,没有则报出:ObjectNotFoundException// get 如果查不到记录,返回的是一个nullUser user = (User) session.load(User.class, userId);try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return user;}public boolean isExitByName(String userName) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();List user = (List) session.createQuery("From User u where u.userName=:userName").setString("userName", userName).list();if (user.size() > 0) {try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return true;}try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return false;}public boolean isExitByNameAndPass(User user) {Session session = this.getSession(true);Transaction tc = (Transaction) session.beginTransaction();List users = (List) session.createQuery("From User u where u.userName=:userName and u.passWord=:passWord").setString("userName", user.getUserName()).setString("passWord", user.getPassWord()).list();if (users.size() > 0) {try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return true;}try {tc.commit();} catch (Exception e) {e.printStackTrace();}session.close();return false;}}
7.在浏览器输入:http://localhost:8080/S2sh-annotation/index.jsp验证

源代码下载地址点击打开链接
http://download.csdn.net/detail/qq_31968809/9772213



0 0
原创粉丝点击