- 浏览: 299426 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
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 1500原来对测试不够重视,出现问题的时候,靠着开着服务器在哪调试,确 ... -
cms 日志记录
2009-05-31 11:11 1863本来没怎么想写日 ... -
常见异常记载
2009-05-26 17:33 19831、Hibernate 表字段 为关键字时 17:32:21 ... -
ssh(ssh2) +Dao项目中的分页查询总结
2009-04-29 11:22 5514一直对分页查询有点模糊,最近分析项目源码中的看到一些分页, ... -
简化开发-base类(泛型)
2009-04-24 00:51 2332本文章主要讲了两个技 ... -
ssh问题小结
2008-12-28 23:22 26221.谈谈hibernate的延迟加载和openSessionI ... -
OpenSessionInView Filter 失效问题
2008-12-18 00:09 1557配置使用Spring的OpenSessionInView F ... -
项目中的一些认识和总结
2008-12-17 21:42 1291在随着项目经验的积累可以体会到很多在书本上难以理解的知识,认识 ... -
商品批发信息发布平台之open session in view 中级联删除问题
2008-12-17 20:39 1483先看下过程 sort.java public class So ... -
open session in view 问题
2008-12-16 21:00 1825在没有使用Spring提供的Open Session ... -
父子类表的设计
2008-12-14 16:42 2332说明:一个部门有若干个子部门,子部门还可以有子部门,本文通过这 ... -
商品批发信息发布平台-项目笔记
2008-12-03 23:41 1196这个是我的毕业设计, ... -
spring2.0与struts1.x 整合三种方法
2008-12-01 22:20 1379一.用spring的DelegatingRequestProc ... -
DispatchAction与validate结合的方法
2008-12-01 18:45 1629刚遇到的问题,在网上找了些资料,然后自己试验了后,总结有三 ...
相关推荐
一个小例子关于 shh整合事例 自己做的希望对大家有帮助
奋战一天弄出来的shh整合的小例子,网上的可供下载的例子全部是myEclipse工程的,我的用netbeans的。所以这个是netbeans6.1的工程。程序内容:输入一个id,正确则返回欢迎页面,否则返回输入页面。数据库我用的是...
6. CRUD操作的实现:通过具体的例子学习如何进行数据库的创建、查询、更新和删除。 通过对这些知识点的深入理解和实践,开发者可以更好地掌握SSH框架,提升在企业级Java Web开发中的技能。同时,这个项目也适合初学...
在这个Demo中,E-Shop可能是一个电子商务应用的例子,它展示了如何在SSH框架下实现商品浏览、购物车、订单处理等功能。开发者可以从中学习到: - 如何配置Struts2的Action类,定义请求映射和结果视图。 - Hibernate...
这本书中的例子直接给出了该如何根据需求(SHH1,SHH2和OpenSSH)来量身定制SSH的不同口味。 5. HUEssential System AdministratorUH,作者Æleen Frisch。对于想成为UNIX系统管理员的人来说 这是一本相当棒的书。这...