Spring_1.2.7 、 webwork_2.2.2及hibernate3的集成
来源:互联网 发布:简单编程 编辑:程序博客网 时间:2024/05/22 16:53
Spring_
1. 到webwork官网下载webwork-
2. 编辑webwork_
图1 目录结构
3. web.xml配置文件说明与举例,web.xml配置文件在WEB-INF目录下,是所有web工程都必须的配置文件,使用webwork框架,需要在改配置文件里面注册webwork框架插件来处理web请求,举例如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Test v2.0</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/spring/applicationContext.xml
</param-value>
</context-param>
<filter>
<filter-name>Encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<!-- spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- This needs to be after Spring ContextLoaderListener -->
<listener>
<listener-class>com.opensymphony.webwork.spring.lifecycle.SpringExternalReferenceResolverSetupListener</listener-class>
</listener>
<!-- spring -->
<listener>
<listener-class>com.opensymphony.webwork.spring.WebWorkSpringObjectFactory</listener-class>
</listener>
<!-- WebWork -->
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>
<!-- WebWork -->
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>register.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/webwork.tld</taglib-location>
</taglib>
</web-app>
4. xwrok.xml配置说明与举例,该文件在类的根目录下,在web工程中应放在src目录下,工程编译后就会导入class目录下,即类根目录.其作用:webwork插件,在此也可以称做web请求处理分派器,分派器会根据该配置文件将web请求交给相应的Action处理,举例如下:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<interceptors>
<interceptor name="externalReferences" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
<interceptor name="catchException" class="com.jetsum.cantus.core.exception.CatchExceptionInterceptor" />
<interceptor-stack name="standard-interceptors">
<interceptor-ref name="externalReferences" />
<interceptor-ref name="prepare" />
<interceptor-ref name="static-params" />
<interceptor-ref name="params" />
<interceptor-ref name="conversionError" />
</interceptor-stack>
<interceptor-stack name="stand-upload-interceptors">
<interceptor-ref name="externalReferences" />
<interceptor-ref name="prepare" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="static-params" />
<interceptor-ref name="params" />
<interceptor-ref name="conversionError" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="standard-interceptors" />
</package>
<include file="login.xml" />
</xwork>
5. login.xml 配置文件说明与举例,专门用来配置LoginAction,该配置文件会被包含入xwork.xml配置文件,这样才能生效,举例如下:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<package name="logins" extends="default" externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver">
<!-- 门诊挂号 -->
<action name="login" class="com.jetsum.test.action.LoginAction">
<external-ref name="userService" required="true">UserService</external-ref>
<result name="error" type="dispatcher">
<param name="location">register.jsp</param>
</result>
<result name="login" type="dispatcher">
<param name="location">register.jsp</param>
</result>
<result name="waibu" type="dispatcher">
<param name="location">register.jsp</param>
</result>
</action>
</package>
</xwork>
注意:externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver" 告知spring框架在需要时配置action内实体之间的映射关系,例如:<external-ref name="userService" required="true">UserService</external-ref>就会引用spring配置的userService对象
6. webwork.properties配置说明与举例 ,此配置文件主要向webwork框架提供一些参数,如编码等,更多信息要查找相关文档,举例如下:
webwork.locale=zh_CN
webwork.i18n.encoding=GBK
7. applicationContext.xml 配置文件说明与举例,专门用来配置bean之间的依赖关系,在需要的时候进行动态的依赖注射,举例如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Hibernate SessionFactory -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xzj"></property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></property>
<property name="maxActive" value="200"></property>
<property name="maxIdle" value="50"></property>
<property name="maxWait" value="60000"></property>
<property name="removeAbandoned" value="true"></property>
<property name="removeAbandonedTimeout" value="30"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/jetsum/test/entity/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
</props>
</property>
</bean>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 用户DAO配置 -->
<bean id="UserDao" class="com.jetsum.test.dao.impl.UserDao">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 用户注册逻辑 -->
<bean id="UserService" parent="txProxyTemplate">
<property name="target">
<bean class="com.jetsum.test.service.impl.UserService">
<property name="dao">
<ref bean="UserDao" />
</property>
</bean>
</property>
</bean>
</beans>
8. User.hbm.xml 配置文件说明实体bean User.java与数据库中表user的对象关系映射,举例如下:
<?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.jetsum.test.entity.User" table="users">
<id name="id" type="java.lang.Integer" unsaved-value="null">
<column name="id" sql-type="int"/>
<generator class="native">
</generator>
</id>
<property
name="name"
type="java.lang.String"
update="true"
insert="true"
column="name"
length="100"
/>
<property
name="password"
type="java.lang.String"
update="true"
insert="true"
column="password"
/>
</class>
</hibernate-mapping>
9. webwork-default.xml 配置文件说明举例如下:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<package name="webwork-default">
<result-types>
<result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>
<result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>
<result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>
<result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>
<result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>
<result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/>
<result-type name="stream" class="com.opensymphony.webwork.dispatcher.StreamResult"/>
</result-types>
<interceptors>
<interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>
<interceptor name="logger" class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/>
<interceptor name="chain" class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/>
<interceptor name="static-params" class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/>
<interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/>
<interceptor name="model-driven" class="com.opensymphony.xwork.interceptor.ModelDrivenInterceptor"/>
<interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
<interceptor name="token" class="com.opensymphony.webwork.interceptor.TokenInterceptor"/>
<interceptor name="token-session" class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor"/>
<interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
<interceptor name="workflow" class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/>
<interceptor name="servlet-config" class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/>
<interceptor name="prepare" class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/>
<interceptor name="conversionError" class="com.opensymphony.webwork.interceptor.WebWorkConversionErrorInterceptor"/>
<interceptor name="fileUpload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
<interceptor name="execAndWait" class="com.opensymphony.webwork.interceptor.ExecuteAndWaitInterceptor"/>
<!-- Basic stack -->
<interceptor-stack name="defaultStack">
<interceptor-ref name="servlet-config"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="static-params"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<!-- Sample validation and workflow stack -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<!-- Sample file upload stack -->
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<!-- Sample Inversion of Control stack -->
<interceptor-stack name="componentStack">
<interceptor-ref name="component"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<!-- Sample model-driven stack -->
<interceptor-stack name="modelDrivenStack">
<interceptor-ref name="model-driven"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<!-- Sample action chaining stack -->
<interceptor-stack name="chainStack">
<interceptor-ref name="chain"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
<!-- Sample execute and wait stack.
Note: execAndWait should always be the *last* interceptor. -->
<interceptor-stack name="executeAndWaitStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
</interceptor-stack>
<interceptor-stack name="completeStack">
<interceptor-ref name="prepare"/>
<interceptor-ref name="servlet-config"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="model-driven"/>
<interceptor-ref name="component"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="static-params"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
</package>
</xwork>
10. log4j.properties 配置文件说明举例如下:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=info
log4j.logger.org.hibernate.type=info
log4j.logger.org.hibernate.tool.hbm2ddl=debug
11.Action类举例
RegisterAction类 源码如下:
package com.jetsum.test.action;
import com.jetsum.test.entity.User;
import com.jetsum.test.service.IUserService;
import com.opensymphony.xwork.ActionSupport;
public class RegisterAction extends ActionSupport {
private IUserService userService;
private User user = new User();
private String statu;
public String getStatu() {
return statu;
}
public void setStatu(String statu) {
this.statu = statu;
}
public String login() {
System.out.println("my name is " + user.getName());
System.out.println("my password is " + user.getPassword());
userService.saveUser(user);
this.statu = "y";
return "error";
}
public IUserService getUserService() {
return userService;
}
public void setUserService(IUserService userService) {
this.userService = userService;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
User 类源码如下:
package com.jetsum.test.entity;
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
12.UserService.java举例
package com.jetsum.test.service.impl;
import java.util.List;
import com.jetsum.test.dao.IUserDao;
import com.jetsum.test.entity.User;
import com.jetsum.test.service.IUserService;
public class UserService implements IUserService{
private IUserDao dao;
public Object saveUser(Object User) {
return dao.saveUser(User);
}
public void delUser(Object User) {
}
public User findById(Integer id) {
return null;
}
public List getYuYue() {
return null;
}
public Object saveList(List list) {
return null;
}
public List getAll() {
return null;
}
public IUserDao getDao() {
return dao;
}
public void setDao(IUserDao dao) {
this.dao = dao;
}
}
13.AbstractDao.java举例
package com.jetsum.test.dao.impl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public abstract class AbstractDao extends HibernateDaoSupport {
public AbstractDao() {
super();
}
public Object save(Object type) {
getHibernateTemplate().save(type);
return type;
}
public void delete(Object type) {
if(type!=null)
getHibernateTemplate().delete(type);
}
}
14.UserDao.java举例
package com.jetsum.test.dao.impl;
import java.util.List;
import com.jetsum.test.dao.IUserDao;
import com.jetsum.test.entity.User;
public class UserDao extends AbstractDao implements IUserDao {
public Object saveUser(Object user) {
return this.save(user);
}
public void delBook(Object Book) {
}
public User findById(Integer id) {
return null;
}
public List getAll() {
return null;
}
}
15. register.jsp举例
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gb2312"%>
<%@taglib prefix="ww" uri="webwork"%>
<!DOCTYPE HTML PUBLIC "-//W
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="login!login.action">
<input type="text" name="user.name" id="name" size="19"/><br><br>
<input name="user.password" id="password" type="password" /><br><br>
<input type="submit" class="btn" value="注册"/>
</form>
</body>
</html>
注意:action="login!login.action"属性,!前面的login表示action名,后面的login表示action需要执行的方法,默认方法为execute方法
- Spring_1.2.7 、 webwork_2.2.2及hibernate3的集成
- Spring_1.2.7 与 webwork_2.2.2集成
- Maven无法下载mybatis-spring_1.2.2版本的问题
- spring集成hibernate3的方式
- Hibernate3与WebLogic8集成
- hibernate3+spring2集成配置
- Spring集成Hibernate3
- spring集成hibernate3
- Struts2+Spring+Hibernate3集成
- Struts1.x + hibernate3 +spring2 集成需要的库
- struts2+spring2.5+hibernate3集成的简单实例
- 新发现了Hibernate3.2与Spring松耦合的集成
- spring(2.5或者3.2)集成hibernate3.5的配置文件
- hibernate3和spring3集成无法自动建表的原因
- Spring对ORM的支持之集成Hibernate3
- Spring对ORM的支持之集成Hibernate3
- ssh集成(struts2+spring3+hibernate3)
- Webwork_2.1.7 配置说明
- 跟老紫竹学Java-计数器项目
- 2.5(?) Text and Fonts Using cFont(字)
- notes[java]
- DBA的面试题也可以是这样
- Daniel J. Bernstein其人其事
- Spring_1.2.7 、 webwork_2.2.2及hibernate3的集成
- Linux(Ubuntu)下编译内核模块
- 面试题集
- const in C++
- CVS 安装配置总结
- 如何在现有 Exchange Server 2003 组织中安装 Exchange 2007
- diff winmerge 文件对比算法实践
- poi操作execl具体方法
- PHP5 Globals Vulnerability