- 浏览: 297228 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
colin_i:
总结的很好,谢谢
Spring事务传播机制和数据库隔离级别 -
xiaoxi0324:
我想问,是否支持获取method内的逻辑分支,比如if分支,普 ...
javassist 学习笔记 -
z390174504:
不错,不错哦
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
chokee:
...
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
chenchangqun:
细致啊,楼主辛苦。
web.xml 中的listener、 filter、servlet 加载顺序及其详解
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts/struts.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- session超时定义,单位为分钟 --> <session-config> <session-timeout>10</session-timeout> </session-config> <!-- 默认首页定义 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
然后创建struts.xml(String配置文件) 要注意这里集成了Spring插件,把全部Spring配置文件注入到ContextLoaderPlugIn中
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginVO" type="com.vo.LoginVO" /> </form-beans> <global-forwards> <forward name="error" path="/error.jsp"/> </global-forwards> <action-mappings> <action path="/login" name="loginVO" type="org.springframework.web.struts.DelegatingActionProxy" parameter="action" scope="request"> <forward name="login" path="/login.jsp"/> <forward name="index" path="/index.jsp"/> </action> </action-mappings> <!-- 集成Spring插件 --> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/spring/*.xml" /> </plug-in> </struts-config>
配置Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 读入属性文件 --> <bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:hibernate.properties</value> </list> </property> </bean> <!-- 配置数据源,可以其他方式 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${hibernate.driverClassName}" /> <property name="url" value="${hibernate.url}" /> <property name="username" value="${hibernate.username}" /> <property name="password" value="${hibernate.password}" /> <property name="maxActive" value="${hibernate.maxActive}" /> <property name="maxIdle" value="${hibernate.maxIdle}" /> <property name="maxWait" value="${hibernate.maxWait}" /> </bean> <!-- 配置Hibernate的Session工厂,注入数据源、映射文件 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource"/> </property> <property name="mappingResources"> <list> <value>com/po/login.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.showSQL}</prop> </props> </property> </bean> <!-- 声明Hibernate事务管理,注入Session工厂 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean> <!-- 配置事务代理,注入事务管理transactionManager,由Spring来代理事务,设置事务属性 --> <bean id="transactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="create*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>
配置Action将Service注入到Action
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置Action,singleton属性设置为false表示不使用单例,每次都重新创建实例,避免并发问题,注入事务管理的Service --> <bean name="/login" class="com.action.LoginAction" singleton="false"> <property name="loginService"> <ref bean="loginService"/> </property> </bean> </beans>
配置Service将Dao注入到Service
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置事务代理Service,先将Dao注入到Service,再将Service注入给事务代理 --> <bean id="loginService" parent="transactionProxy"> <property name="target"> <ref bean="loginTempService"/> </property> </bean> <bean id="loginTempService" class="com.service.LoginService"> <property name="loginDao"> <ref bean="loginDao"/> </property> </bean> </beans>
配置Dao 注入Session工厂
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- 配置Dao,注入Session工厂 --> <bean id="loginDao" class="com.dao.LoginDao"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> </beans>
数据源属性文件(注意不是Hibernate的配置文件,是为了让Spring读入的)
hibernate.dialect=org.hibernate.dialect.SQLServerDialect hibernate.driverClassName=com.mysql.jdbc.Driver hibernate.url=jdbc:mysql://127.0.0.1:3306/ssh hibernate.username=root hibernate.password=5719 hibernate.showSQL=true hibernate.maxActive=50 hibernate.maxIdle=30 hibernate.maxWait=1000
log4j配置文件(简单)
log4j.rootLogger=ERROR,console,file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p %d [%F,%L] - %m%n log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=F:\\SSH.log #log4j.appender.file.MaxFileSize=100000KB #log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p %d [%F,%L] - %m%n
下面是类文件
package com.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import com.service.LoginService; import com.vo.LoginVO; public class LoginAction extends DispatchAction { private Log logger = LogFactory.getLog(LoginAction.class); private LoginService loginService; public void setLoginService(LoginService loginService) { this.loginService = loginService; } public ActionForward login(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { try { LoginVO loginVO = (LoginVO) form; String username = loginVO.getUsername(); String password = loginVO.getPassword(); System.out.println(username+password); if(loginService.validate(username, password)) { return mapping.findForward("index"); } return mapping.findForward("error"); } catch (Exception e) { logger.error(e); return mapping.findForward("error"); } } public ActionForward save(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { try { LoginVO loginVO = (LoginVO) form; loginService.saveUser(loginVO); return mapping.findForward("index"); } catch (Exception e) { logger.error(e); return mapping.findForward("error"); } } } package com.dao; import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.po.LoginPO; public class LoginDao extends HibernateDaoSupport { @SuppressWarnings("unchecked") public String getPassword(String username) { String hql = "from LoginPO l where l.username=?"; List list = getSession().createQuery(hql).setString(0,username).list(); if(list!=null && list.size()>0) { LoginPO loginPO = (LoginPO) list.get(0); return loginPO.getPassword(); } return null; } public void save(LoginPO loginPO) { getSession().save(loginPO); } } package com.po; import java.io.Serializable; public class LoginPO implements Serializable { private static final long serialVersionUID = 1L; private Integer id = null; private String username = null; private String password = null; public Integer getId() { return id; } public String getPassword() { return password; } public String getUsername() { return username; } public void setId(Integer id) { this.id = id; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } } package com.service; import com.dao.LoginDao; import com.po.LoginPO; import com.vo.LoginVO; public class LoginService { private LoginDao loginDao; public void setLoginDao(LoginDao loginDao) { this.loginDao = loginDao; } public boolean validate(String username,String password) { String pass = loginDao.getPassword(username); if(pass!=null) { if(pass.equals(password)) { return true; } } return false; } public void saveUser(LoginVO loginVO) { LoginPO loginPO = new LoginPO(); loginPO.setUsername(loginVO.getUsername()); loginPO.setPassword(loginVO.getPassword()); System.out.println(loginVO.getUsername()+"-"+loginVO.getPassword()+":save succeed..."); loginDao.save(loginPO); //故意制造异常,测试事务。 //loginDao.save(null); } } package com.vo; import org.apache.struts.action.ActionForm; public class LoginVO extends ActionForm { private static final long serialVersionUID = 1L; private String username = null; private String password = null; public String getPassword() { return password; } public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } }
Hibernate映射文件
<?xml version="1.0"?> <!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.po.LoginPO" table="login"> <comment></comment> <id name="id" type="int"> <column name="id" /> <generator class="native" /> </id> <property name="username" type="string"> <column name="username" not-null="true"> <comment></comment> </column> </property> <property name="password" type="string"> <column name="password" not-null="true"> <comment></comment> </column> </property> </class> </hibernate-mapping>
jsp页面文件<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<form name="form" action="login.do?action=login" method="post">
<h1>Login</h1>
<h4>username:</h4><input name="username" type="text"> <span id="message"></span>
<h4>password:</h4><input name="password" type="password">
<br>
<br>
<input value="提交" type="button" onclick="form.submit();">
</form>
<br>
<br>
<br>
<form name="form" action="login.do?action=save" method="post">
<h1>Save</h1>
<h4>username:</h4><input name="username" type="text"> <span id="message"></span>
<h4>password:</h4><input name="password" type="password">
<br>
<br>
<input value="提交" type="button" onclick="form.submit();">
</form>
</body>
</html>
发表评论
-
ssh 相关方面的测试
2009-06-10 00:45 1478原来对测试不够重视,出现问题的时候,靠着开着服务器在哪调试,确 ... -
cms 日志记录
2009-05-31 11:11 1834本来没怎么想写日 ... -
常见异常记载
2009-05-26 17:33 19421、Hibernate 表字段 为关键字时 17:32:21 ... -
ssh(ssh2) +Dao项目中的分页查询总结
2009-04-29 11:22 5494一直对分页查询有点模糊,最近分析项目源码中的看到一些分页, ... -
简化开发-base类(泛型)
2009-04-24 00:51 2314本文章主要讲了两个技 ... -
ssh问题小结
2008-12-28 23:22 26101.谈谈hibernate的延迟加载和openSessionI ... -
OpenSessionInView Filter 失效问题
2008-12-18 00:09 1545配置使用Spring的OpenSessionInView F ... -
项目中的一些认识和总结
2008-12-17 21:42 1244在随着项目经验的积累可以体会到很多在书本上难以理解的知识,认识 ... -
商品批发信息发布平台之open session in view 中级联删除问题
2008-12-17 20:39 1473先看下过程 sort.java public class So ... -
open session in view 问题
2008-12-16 21:00 1800在没有使用Spring提供的Open Session ... -
父子类表的设计
2008-12-14 16:42 2311说明:一个部门有若干个子部门,子部门还可以有子部门,本文通过这 ... -
商品批发信息发布平台-项目笔记
2008-12-03 23:41 1182这个是我的毕业设计, ... -
spring2.0与struts1.x 整合三种方法
2008-12-01 22:20 1365一.用spring的DelegatingRequestProc ... -
DispatchAction与validate结合的方法
2008-12-01 18:45 1612刚遇到的问题,在网上找了些资料,然后自己试验了后,总结有三 ...
相关推荐
一个小例子关于 shh整合事例 自己做的希望对大家有帮助
这个"关于SHH整合简单案例_MyEclipse案例"应该是为了帮助初学者理解如何在MyEclipse环境下搭建和使用SSH框架进行项目开发。下面我们将深入探讨SSH整合的核心概念、配置步骤以及MyEclipse中的应用。 1. **Spring框架...
### SHH整合框架实现分页 #### 背景与目的 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常需要对查询结果进行分页处理。分页不仅可以有效地展示大量数据,还能够减少每次请求的数据量,提高系统的...
"SHH整合+web,struts2,spring配置" 指的是将Struts2、Hibernate和Spring这三大Java企业级开发框架进行整合,并涉及到与Web应用程序相关的配置,尤其是Struts2和Spring的配置文件。 **描述解析:** 描述中提到的...
标题中提到的"shh 整合jar包"可能包含了这些框架及其依赖的jar文件,确保项目能够正常运行。开发者只需按照上述步骤配置和编写代码,就可以利用SSH框架高效地开发企业级应用。 总结来说,SSH整合是Java Web开发中的...
"J2EE_SHH框架整合"指的是将三个非常流行的开源框架——Struts2、Spring和Hibernate集成到一个项目中,以实现更高效、更灵活的开发流程。这三个框架分别负责不同的职责:Struts2处理MVC(Model-View-Controller)...
1、SHH整合 详细清晰的标准配置,主流的应用配置,struts2.2+spring2.5+hibernate3.0 2、结合MYSQL轻量级数据库,有写好的库表sql 3、整合日志管理配置,及Spring代理日志管理的配置及应用 4、应用WEB前段主流技术,...
开发环境: (1) OS:Windows XP SP3 (2) DB:SQLServer 2005 (3) JDK:1.6.0_18 (4) Server:Apache Tomcat v5.5 (5) IDE:Eclipse Indigo Service Release 1 SSH框架: (1) Struts2.1.8 ...注:个人开发环境不同,...
SSH2架构整合主要指的是Spring、Hibernate和Struts2这三大框架在Java开发中的集成应用。SSH2是一个流行的企业级Web应用程序开发框架,它允许开发者利用各自的优势,构建出高效、可维护的Java Web项目。 首先,...
标题“shh的例子”可能指的是在IT领域中使用SSH(Secure SHell)协议的一个实例,SSH是一种用于安全地远程登录到服务器、传输数据以及执行命令的网络协议。在这个例子中,我们可能会探讨如何配置和使用SSH,特别是...
SSH所需要的特殊jar包,包括commons-dbcp2-2.1.1.jar,commons-pool2-2.4.1.jar, log4j-1.2.15.jar , log4j-api-2.9.1.jar, log4j-core-2.9.1.jar, spring-web.jar , struts2-spring-plugin-2.1.8.1.jar
本实例将深入探讨SSH的整合应用。 首先,我们需要了解SSH的基本概念。SSH主要包括两部分:客户端和服务端。客户端安装在用户计算机上,用于发起连接请求;服务端则运行在远程服务器上,接收并处理连接请求。当用户...
【SSH整合源码详解】 SSH(Struts2、Spring、Hibernate)是Java开发中的经典企业级应用框架组合,常用于构建高效、可扩展的Web应用。这个整合源码旨在为初学者提供一个清晰易懂的学习资源,帮助他们理解这三个框架...
【SSH2与Oracle11g整合详解】 在IT行业中,SSH2(Struts2、Spring、Hibernate2)是一个常见的Java企业级应用开发框架组合,它为开发者提供了强大的模型-视图-控制器(MVC)架构支持,使得业务逻辑处理、数据持久化...
SHH框架集合Webservice是一个专为Java开发人员设计的整合性解决方案,旨在简化Web服务的开发、部署和消费。这个框架结合了Spring、Hibernate和Struts(SHH)这三个流行的开源技术,为构建高效、可扩展的企业级应用...
junit4与shh2+velocity框架整合 培训
SHH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他安全网络服务。它主要用于在服务器之间传输数据,确保数据在传输过程中不被窃取或篡改。SHH通过加密技术提供了强大的身份验证和...
"SHH整合",即Struts2、Hibernate和Spring的整合,是Java Web开发中的常见模式。虽然本项目没有明确提及Spring,但理解SHH整合的概念对于深入学习和实践仍具有重要意义。Spring框架提供依赖注入(DI)和面向切面编程...
shh下载