开发环境:MyEclipse Version: 6.0.0 M1 + apache-tomcat-6.0.14 + JDK6
下面我以用户登录为例子进行演示S-S-H 如何进行联合开发。
一、打开MyEclipse,创建一个新的web工程。
二、添加Struts Capabilities
添加完成后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">
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
struts-config.xml 文件内容如下:
<?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 />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings />
<message-resources
parameter="net.w3oa.his.web.struts.ApplicationResources" />
</struts-config>
修改UserLoginAction.Java文件
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package net.w3oa.his.web.struts.action;
import javax.servlet.http.*;
import net.w3oa.his.web.struts.form.UserLoginForm;
import org.apache.struts.action.*;
/**
* MyEclipse Struts
* Creation date: 12-18-2007
*
* XDoclet definition:
* @struts.action path="/userLogin" name="userLoginForm" input="/form/userLogin.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/welcome.jsp"
*/
public class UserLoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub
return null;
}
}
修改后的UserLoginAction.Java文件内容为:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package net.w3oa.his.web.struts.action;
import javax.servlet.http.*;
import net.w3oa.his.web.struts.form.UserLoginForm;
import org.apache.struts.action.*;
/**
* MyEclipse Struts
* Creation date: 12-18-2007
*
* XDoclet definition:
* @struts.action path="/userLogin" name="userLoginForm" input="/form/userLogin.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/welcome.jsp"
*/
public class UserLoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub
return mapping.findForward("success");
}
}
注:此时将工程部署到web服务器运行测试一切正常。
三、添加Spring Capabilities
在可选项里选择可能用到的包。这里我有点懒,就全选了。
添加完毕之后web.xml,struts-config.Xml两个文件并无变化。
applicationContext.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
</beans>
注:此时将工程部署到web服务器运行测试一切正常。
四、将spring与struts集成
a) 将org.springframework.web.struts.ContextLoaderPlugIn加入struts-config.Xml文件中。
此时struts-config.xml 文件内容如下:
<?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 />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings />
<message-resources
parameter="net.w3oa.his.web.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
b) 添加测试用UserLoginAction、UserLoginActionForm及userLogin.jsp文件
添加完成后struts-config.xml文件内容如下:
<?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 />
<form-beans>
<form-bean name="userLoginForm"
type="net.w3oa.his.web.struts.form.UserLoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="userLoginForm" input="/form/userLogin.jsp"
name="userLoginForm" path="/userLogin" scope="request"
type="net.w3oa.his.web.struts.action.UserLoginAction">
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
</action>
</action-mappings>
<message-resources
parameter="net.w3oa.his.web.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
注:此时将工程部署到web服务器运行测试一切正常。
c) 修改<action/>节点属性type="org.springframework.web.struts.DelegatingActionProxy"
修改后的struts-config.xml文件内容如下:
<?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 />
<form-beans>
<form-bean name="userLoginForm"
type="net.w3oa.his.web.struts.form.UserLoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="userLoginForm" input="/form/userLogin.jsp"
name="userLoginForm" path="/userLogin" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
</action>
</action-mappings>
<message-resources
parameter="net.w3oa.his.web.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
d) 将UserLoginAction配置到applicationContext.xml文件中。
配置后的applicationContext.Xml文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean name="/userLogin"
class="net.w3oa.his.web.struts.action.UserLoginAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
</bean>
</beans>
注:此时将工程部署到web服务器运行测试一切正常。
五、添加Hibernate Capabilities
添加完毕之后web.xml,struts-config.Xml两个文件并无变化。
applicationContext.xml文件的内容变为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean name="/userLogin"
class="net.w3oa.his.web.struts.action.UserLoginAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
</beans>
hibernate.cfg.xml文件的内容为:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.url">
jdbc:jtds:sqlserver://localhost:1433/WebHIS
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="myeclipse.connection.profile">WebHIS</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">
net.sourceforge.jtds.jdbc.Driver
</property>
</session-factory>
</hibernate-configuration>
注:此时将工程部署到web服务器运行测试一切正常。
六、访问数据库数据
a) 打开DB Browser,连接数据库并生成User,UserDAO类及User.hbm.Xml文件。
applicationContext.xml文件内容此时变为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean name="/userLogin"
class="net.w3oa.his.web.struts.action.UserLoginAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="UserDAO" class="net.w3oa.his.hibernate.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</beans>
b) 修改UserLoginAction类的内容。
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package net.w3oa.his.web.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.w3oa.his.hibernate.User;
import net.w3oa.his.hibernate.UserDAO;
import net.w3oa.his.web.struts.form.UserLoginForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts Creation date: 12-18-2007
*
* XDoclet definition:
*
* @struts.action path="/userLogin" name="userLoginForm"
* input="/form/userLogin.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/welcome.jsp"
*/
public class UserLoginAction extends Action {
/*
* Generated Methods
*/
private User user;
private UserDAO userDAO;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;
String userName = userLoginForm.getUserName();
String password = userLoginForm.getPassword();
this.user = this.userDAO.findById(userName);
if (userName.equals(user.getUserName()) && password.equals(user.getPassword())) {
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
}
c) 修改applicationContext.Xml文件
i. 添加新的bean节点
<bean id="User" class="net.w3oa.his.hibernate.User"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
</bean>
ii. 修改name="/userLogin"的bean节点。如下:
<bean name="/userLogin"
class="net.w3oa.his.web.struts.action.UserLoginAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="user">
<ref local="User" />
</property>
<property name="userDAO">
<ref local="UserDAO" />
</property>
</bean>
将工程部署到web服务器运行测试成功。
Ok,到此为止一个S-S-H小例子完成。
注:
最近应一个朋友的要求做一个S-S-H架构模式的小东西,很久没有使用SSH架构模式进行开发了,现在都不知道如何进行配置了,配置的过程中除了一些问题,后来去群里请教,被一个刚从培训中心出来的小子给骂了一通,还不帮俺解决问题。感觉现在程序员以往的那种乐于助人的精神竟一时间不覆存在。
痛定思痛决定自己写一个小DEMO出来,以避免忘却S-S-H配置的老开发员们再受此辱。
转载请注明出处.谢谢.