`
kiki1120
  • 浏览: 315788 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

SSH框架入门(三)

阅读更多

一个小例子,看看struts1.2.9+spring2.0.6+hibernate3.0.5 是如何整合在一起进行javaweb开发的


一个简单的OA小系统,下面是预览图和项目结构





 

 

这个SSH整合的例子,用到了许多经典的整合技巧,能帮助初学者清晰的理解整合的步骤和技巧,我们也可以使用这个框架为模版,来搭建自己SSH的环境。


首先我列出关键的整合步骤


1.建立WEB项目的目录结构

   a.strtus的 ActionServlet 配置在web.xml 中

   b.将spring的监听器 配置在web.xml

   c.字符乱码过滤器 配置在web.xml

<?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">

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<filter>
		<filter-name>Set Character Encoding</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>
	</filter>
	<filter>
		<filter-name>sitemesh</filter-name>
		<filter-class>
			com.opensymphony.module.sitemesh.filter.PageFilter
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>sitemesh</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>Set Character Encoding</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-config.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-config>
		<session-timeout>120</session-timeout>
	</session-config>

	<!-- The Usual Welcome File List -->
	<welcome-file-list>
		<welcome-file>index.do</welcome-file>
	</welcome-file-list>
	<jsp-config>
		<taglib>
			<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
			<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
			<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
			<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
			<taglib-location>
				/WEB-INF/struts-nested.tld
			</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
			<taglib-location>
				/WEB-INF/struts-template.tld
			</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
			<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
		</taglib>

		<taglib>
			<taglib-uri>sitemesh-page</taglib-uri>
			<taglib-location>
				/WEB-INF/sitemesh-page.tld
			</taglib-location>
		</taglib>

		<taglib>
			<taglib-uri>sitemesh-decorator</taglib-uri>
			<taglib-location>
				/WEB-INF/sitemesh-decorator.tld
			</taglib-location>
		</taglib>
	</jsp-config>
	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

2.编写spring的配置文件 applicationContext.xml

 

  a. 配置数据源

  b.让spring来管理SessionFactory

  c.配置事务

  d.配置Hibernate 属性以及映射文件

  e.定义DAO和DAO代理

  f.根据需要配置AOP

  g.定义struts的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>


	<!--  配置数据源 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:mysql://localhost:3306/demo?useUnicode=true&amp;characterEncoding=utf-8</value>
		</property>
		<property name="username">
			<value>root</value>
		</property>
		<property name="password">
			<value>12345678</value>
		</property>
	</bean>


	<!-- 配置Hibernate -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="mappingResources">
			<list>
				<value>com/demo/hibernate/beans/User.hbm.xml</value>
				<value>com/demo/hibernate/beans/Address.hbm.xml</value>
				<value>com/demo/hibernate/beans/Schedule.hbm.xml</value>
				<value>com/demo/hibernate/beans/Worklog.hbm.xml</value>
				<value>com/demo/hibernate/beans/Sms.hbm.xml</value>
				<value>com/demo/hibernate/beans/Notice.hbm.xml</value>
				<value>com/demo/hibernate/beans/Meeting.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>


	<!-- 配置事务 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>


	<!-- 定义DAO -->
	<bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="addressDAO" class="com.demo.hibernate.dao.AddressDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="scheduleDAO" class="com.demo.hibernate.dao.ScheduleDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="worklogDAO" class="com.demo.hibernate.dao.WorklogDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="smsDAO" class="com.demo.hibernate.dao.SmsDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="noticeDAO" class="com.demo.hibernate.dao.NoticeDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	<bean id="meetingDAO" class="com.demo.hibernate.dao.MeetingDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>


	<!-- 定义DAO代理 -->
	<bean id="UserDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="userDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="addressDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="addressDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="scheduleDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="scheduleDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="worklogDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="worklogDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="smsDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="smsDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="noticeDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="noticeDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="meetingDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="meetingDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="delete*">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>


	<!-- 定义Struts配置 -->
	<bean name="/login" class="com.demo.struts.actions.LoginAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>
	<bean name="/logout" class="com.demo.struts.actions.LogoutAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>
	<bean name="/register"
		class="com.demo.struts.actions.RegisterAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>

	<!-- 定义Struts配置:address -->
	<bean name="/address"
		class="com.demo.struts.actions.AddressAction">
		<property name="addressDAO">
			<ref local="addressDAO" />
		</property>
	</bean>
	<bean name="/address_add"
		class="com.demo.struts.actions.AddressAction">
		<property name="addressDAO">
			<ref local="addressDAO" />
		</property>
	</bean>
	<bean name="/address_edit"
		class="com.demo.struts.actions.AddressAction">
		<property name="addressDAO">
			<ref local="addressDAO" />
		</property>
	</bean>


	<!-- 定义Struts配置:schedule -->
	<bean name="/schedule"
		class="com.demo.struts.actions.ScheduleAction">
		<property name="scheduleDAO">
			<ref local="scheduleDAO" />
		</property>
	</bean>
	<bean name="/schedule_add"
		class="com.demo.struts.actions.ScheduleAction">
		<property name="scheduleDAO">
			<ref local="scheduleDAO" />
		</property>
	</bean>
	<bean name="/schedule_edit"
		class="com.demo.struts.actions.ScheduleAction">
		<property name="scheduleDAO">
			<ref local="scheduleDAO" />
		</property>
	</bean>

	<!-- 定义Struts配置:worklog -->
	<bean name="/worklog"
		class="com.demo.struts.actions.WorklogAction">
		<property name="worklogDAO">
			<ref local="worklogDAO" />
		</property>
	</bean>
	<bean name="/worklog_add"
		class="com.demo.struts.actions.WorklogAction">
		<property name="worklogDAO">
			<ref local="worklogDAO" />
		</property>
	</bean>
	<bean name="/worklog_edit"
		class="com.demo.struts.actions.WorklogAction">
		<property name="worklogDAO">
			<ref local="worklogDAO" />
		</property>
	</bean>

	<!-- 定义Struts配置:sms -->
	<bean name="/sms" class="com.demo.struts.actions.SmsAction">
		<property name="smsDAO">
			<ref local="smsDAO" />
		</property>
	</bean>
	<bean name="/sms_add" class="com.demo.struts.actions.SmsAction">
		<property name="smsDAO">
			<ref local="smsDAO" />
		</property>
	</bean>

	<!-- 定义Struts配置:notice -->
	<bean name="/notice" class="com.demo.struts.actions.NoticeAction">
		<property name="noticeDAO">
			<ref local="noticeDAO" />
		</property>
	</bean>
	<bean name="/notice_add"
		class="com.demo.struts.actions.NoticeAction">
		<property name="noticeDAO">
			<ref local="noticeDAO" />
		</property>
	</bean>
	<bean name="/notice_edit"
		class="com.demo.struts.actions.NoticeAction">
		<property name="noticeDAO">
			<ref local="noticeDAO" />
		</property>
	</bean>

	<!-- 定义Struts配置:meeting -->
	<bean name="/meeting"
		class="com.demo.struts.actions.MeetingAction">
		<property name="meetingDAO">
			<ref local="meetingDAO" />
		</property>
	</bean>
	<bean name="/meeting_add"
		class="com.demo.struts.actions.MeetingAction">
		<property name="meetingDAO">
			<ref local="meetingDAO" />
		</property>
	</bean>
	<bean name="/meeting_edit"
		class="com.demo.struts.actions.MeetingAction">
		<property name="meetingDAO">
			<ref local="meetingDAO" />
		</property>
	</bean>


	<!-- 配置拦截器 -->
	<bean name="logger" class="com.demo.spring.aop.LoggingInterceptor" />

	<!-- 配置拦截器代理 -->
	<bean name="loggingAutoProxy"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
				<value>/login</value>
				<value>/register</value>
				<value>/address</value>
				<value>/address_add</value>
				<value>/address_edit</value>
				<value>/schedule</value>
				<value>/schedule_add</value>
				<value>/schedule_edit</value>
				<value>/worklog</value>
				<value>/worklog_add</value>
				<value>/worklog_edit</value>
				<value>/sms</value>
				<value>/sms_add</value>
				<value>/notice</value>
				<value>/notice_add</value>
				<value>/notice_edit</value>
				<value>/meeting</value>
				<value>/meeting_add</value>
				<value>/meeting_edit</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>logger</value>
			</list>
		</property>
	</bean>

</beans>

 

3.配置 struts.xml ,使用spring的处理器(controller)来 处理用户的请求

<?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>
	<!-- 
		<data-sources>
		<data-source type="org.apache.commons.dbcp.BasicDataSource">
		<set-property property="driverClassName"
		value="org.gjt.mm.mysql.Driver" />
		<set-property property="url"
		value="jdbc:mysql://localhost:3306/demo" />
		<set-property property="username" value="root" />
		<set-property property="password" value="" />
		<set-property property="maxActive" value="10" />
		<set-property property="maxWait" value="5000" />
		<set-property property="defaultAutoCommit" value="false" />
		<set-property property="defaultReadOnly" value="false" />
		<set-property property="validationQuery"
		value="SELECT COUNT(*) FROM user" />
		</data-source>
		</data-sources>
	-->
	<form-beans>
		<form-bean name="pageForm"
			type="com.demo.struts.forms.PageForm">
		</form-bean>
		<form-bean name="loginForm"
			type="com.demo.struts.forms.LoginForm">
		</form-bean>
		<form-bean name="registerForm"
			type="com.demo.struts.forms.RegisterForm">
		</form-bean>
		<form-bean name="addressForm"
			type="com.demo.struts.forms.AddressForm">
		</form-bean>
		<form-bean name="scheduleForm"
			type="com.demo.struts.forms.ScheduleForm">
		</form-bean>
		<form-bean name="worklogForm"
			type="com.demo.struts.forms.WorklogForm">
		</form-bean>
		<form-bean name="smsForm"
			type="com.demo.struts.forms.SmsForm">
		</form-bean>
		<form-bean name="noticeForm"
			type="com.demo.struts.forms.NoticeForm">
		</form-bean>
		<form-bean name="meetingForm"
			type="com.demo.struts.forms.MeetingForm">
		</form-bean>
	</form-beans>

	<global-exceptions />
	<global-forwards>
		<forward name="welcome" path="/welcome.do" />
		<forward name="login" path="/login.do" />
		<forward name="index" path="/login.jsp" />
	</global-forwards>

	<action-mappings>
		<action path="/index" forward="/login.jsp" />
		<action path="/welcome" forward="/welcome.jsp" />

		<action path="/login" name="loginForm" scope="request"
			
			input="/login.jsp">
			<forward name="success" path="/welcome.jsp" />
			<forward name="failure" path="/login.jsp" />
		</action>

		<action path="/logout"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="logout" path="/login.jsp" />
		</action>

		<action path="/register" parameter="method" name="registerForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/register.jsp">
			<forward name="success" path="/login.jsp" />
			<forward name="failure" path="/register.jsp" />
		</action>

		<!-- 通讯录模块 -->
		<action path="/address" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/address.jsp" />
		</action>
		<action path="/address_add" parameter="method"
			name="addressForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/address_add.jsp">
			<forward name="list" path="/address.jsp" />
			<forward name="add" path="/address_add.jsp" />
		</action>
		<action path="/address_edit" parameter="method"
			name="addressForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/address_edit.jsp">
			<forward name="list" path="/address.jsp" />
			<forward name="edit" path="/address_edit.jsp" />
		</action>

		<!-- 日程安排模块 -->
		<action path="/schedule" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/schedule.jsp" />
		</action>
		<action path="/schedule_add" parameter="method"
			name="scheduleForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/schedule_add.jsp">
			<forward name="list" path="/schedule.jsp" />
			<forward name="add" path="/schedule_add.jsp" />
		</action>
		<action path="/schedule_edit" parameter="method"
			name="scheduleForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/schedule_edit.jsp">
			<forward name="list" path="/schedule.jsp" />
			<forward name="edit" path="/schedule_edit.jsp" />
		</action>

		<!-- 工作日志 -->
		<action path="/worklog" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/worklog.jsp" />
		</action>
		<action path="/worklog_add" parameter="method"
			name="worklogForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/worklog_add.jsp">
			<forward name="list" path="/worklog.jsp" />
			<forward name="add" path="/worklog_add.jsp" />
		</action>
		<action path="/worklog_edit" parameter="method"
			name="worklogForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/worklog_edit.jsp">
			<forward name="list" path="/worklog.jsp" />
			<forward name="edit" path="/worklog_edit.jsp" />
		</action>

		<!-- 短消息管理 -->
		<action path="/sms" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/sms.jsp" />
		</action>
		<action path="/sms_add" parameter="method" name="smsForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/sms_add.jsp">
			<forward name="list" path="/sms.jsp" />
			<forward name="add" path="/sms_add.jsp" />
		</action>

		<!-- 公告管理 -->
		<action path="/notice" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/notice.jsp" />
		</action>
		<action path="/notice_add" parameter="method" name="noticeForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/notice_add.jsp">
			<forward name="list" path="/notice.jsp" />
			<forward name="add" path="/notice_add.jsp" />
		</action>
		<action path="/notice_edit" parameter="method" name="noticeForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/notice_edit.jsp">
			<forward name="list" path="/notice.jsp" />
			<forward name="edit" path="/notice_edit.jsp" />
		</action>

		<!-- 会议管理 -->
		<action path="/meeting" parameter="method" name="pageForm"
			scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy">
			<forward name="list" path="/meeting.jsp" />
		</action>
		<action path="/meeting_add" parameter="method"
			name="meetingForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/meeting_add.jsp">
			<forward name="list" path="/meeting.jsp" />
			<forward name="add" path="/meeting_add.jsp" />
		</action>
		<action path="/meeting_edit" parameter="method"
			name="meetingForm" scope="request"
			type="org.springframework.web.struts.DelegatingActionProxy"
			input="/meeting_edit.jsp">
			<forward name="list" path="/meeting.jsp" />
			<forward name="edit" path="/meeting_edit.jsp" />
		</action>

	</action-mappings>

		 
		<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
	

	<message-resources
		parameter="com.demo.struts.resources.ApplicationResources" />

	<!-- 
		<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
			<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
		</plug-in>
-->

</struts-config>

 

详细的代码请下载附件中的项目,用sql脚本,建立库和表已经数据,将项目放在TOMCat下,来验证

 

源码下载请到原作者博客。

转自:http://8366.iteye.com/blog/476923

分享到:
评论
1 楼 jspandservlet 2011-11-24  
缺了很多的包

相关推荐

    SSH框架入门

    这个"SSH框架入门"资源显然旨在帮助初学者快速理解并掌握这三大框架的基本用法和集成方式。SSH框架的使用能极大地提高开发效率,简化业务逻辑处理,以及实现数据持久化。 Struts2作为MVC(Model-View-Controller)...

    ssh框架入门实例

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个入门实例将引导新手逐步理解并掌握SSH框架的使用,从而提升Web应用开发的能力。 首先,Struts2作为MVC(Model-...

    ssh框架入门搭建项目

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,...因此,"ssh框架入门搭建项目"是学习Java Web开发的绝佳起点。

    用java中的ssh三大框架做的一个入门的例子

    SSH是Java开发中常用的三大框架,分别是Struts、Spring和Hibernate。这个例子旨在为初学者提供一个基于SSH的简单应用示例,帮助他们理解和...通过这个入门实例,初学者可以逐步理解并掌握SSH框架的核心概念和实践技巧。

    SSH三大框架经典入门教程 PDF清晰版

    在PDF清晰版的SSH三大框架经典入门教程中,读者可以系统地学习这些内容,通过实例和练习加深理解,逐步掌握SSH框架的使用,为Java Web开发打下坚实基础。教程可能涵盖理论讲解、代码示例、实战项目等内容,帮助初学...

    SSH框架搭建步骤

    SSH框架,全称为Spring、Struts和Hibernate的首字母缩写,是Java开发中的一个经典组合,用于构建企业级Web应用程序。Spring提供了依赖注入(DI)和面向切面编程(AOP),Struts则处理MVC(模型-视图-控制器)架构,...

    ssh三大框架学习资料

    SSH框架是Java企业级开发中常用的一个框架组合,包括了Struts2、Spring和Hibernate三个开源框架。这三个框架各自承担不同的职责,相互协作,可以大幅度提高开发效率和项目的维护性。 Struts2是一个基于MVC设计模式...

    SSH框架整合入门helloworld两种事务管理方式(失败的自己)

    SSH框架整合入门——HelloWorld与两种事务管理方式详解 SSH框架是Java开发中常见的三大开源框架集成,包括Spring、Struts2和Hibernate。这个框架组合提供了强大的MVC(Model-View-Controller)架构支持,方便开发者...

    SSH三大框架经典入门教程(教程文档大全) 中文PDF完整版

    SSH三大框架经典入门教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 资料包含:领略清晰的MVC流程- --- Struts...

    完整版韩顺平.2011版.SSH框架视频教程.校内网.课堂源代码xiaoneinew

    SSH框架是指结合了Struts2+Hibernate+Spring的开发模式,它将这三个优秀的开源框架整合在一起,为Java开发提供了一种快速、简易且高效的方式。通过SSH框架,开发者可以更加方便地进行web应用的开发。SSH框架的整体...

    推荐给SSH框架初学者例子

    SSH框架是Java Web开发中非常流行的一个组合,主要包括Spring、Struts和Hibernate三个部分。这个框架结合了MVC设计模式,使得开发人员可以更高效、更便捷地进行企业级应用的开发。对于初学者来说,掌握SSH框架是踏入...

    ssh框架实现登录注册 数据库自己建

    ssh框架整合实现登录注册,加载jar包,编写配置文件,数据库自己创建,ssh框架入门 还有许多要学的,只是入门知识,框架内容很多,多加理解练习

    ssh框架简单例子带有解释

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了一种高效、灵活且可扩展的解决方案,用于构建企业级的Web应用程序。在这个"ssh框架简单例子带有解释...

    简单ssh框架(适合开发及初学者了解ssh框架)

    总的来说,SSH框架是Java Web开发中的一套经典组合,对于初学者来说,通过学习和实践这个简单的SSH2框架实现,可以快速入门并理解Web开发的基本架构和流程,为后续更复杂的应用开发打下坚实的基础。

    ssh实现的资源共享网站,是学习ssh框架的入门资源,需要的架包是标准的ssh架包

    在SSH框架下,Struts2可以处理用户的请求并调用后台服务进行资源操作,Spring可以管理这些服务以及相关的事务,而Hibernate则负责与数据库之间的数据交互,例如存储用户信息、资源元数据以及权限设置等。 **...

    ssh框架搭建及实例

    理解SSH框架的搭建和实例,不仅可以帮助初学者快速入门Java Web开发,还能够深入理解MVC模式、依赖注入和持久化等核心概念。通过实际操作,你可以更好地掌握这些技术,为日后的开发工作打下坚实的基础。在学习过程中...

    SSH三大框架经典入门教程 PDF清晰版 只要2C币

    本教程旨在为初学者提供一个清晰、全面的SSH框架入门指导。 Spring框架是核心,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能,有助于简化应用的复杂性...

    ssh框架详细概述即实现ppt

    本PPT详细地介绍了SSH框架的基础知识,旨在帮助初学者快速入门并深入理解其核心组件。 Struts是SSH中的MVC(Model-View-Controller)框架,主要负责处理视图和控制器之间的交互。它鼓励开发者遵循M2模式,即Model2...

    ssh实现的校园招聘网站,是学习ssh的入门资料,概括了大部分的ssh框架

    这个“ssh实现的校园招聘网站”项目,是一个理想的学习资源,旨在帮助初学者理解SSH框架的集成与实际应用。 Spring框架作为核心的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)容器,负责管理...

    JavaWeb_SSH框架入门,IntelliJ idea搭建Struts2的helloWorld

    【JavaWeb_SSH框架入门,IntelliJ IDEA搭建Struts2的HelloWorld】是一个适合初学者的教程,主要讲解如何在IntelliJ IDEA这个强大的Java集成开发环境中搭建一个基于Struts2框架的简单Web应用。SSH框架是Struts2、...

Global site tag (gtag.js) - Google Analytics