Struts + Spring整合3种方法亲身实践(1)
由于最近要做一个项目,用到struts, spring, hibernate;之前我做项目,只用过struts ,hibernate(很落后的表现,呵呵!),所以呢下定决心,练了一把,先写一个最简单的struts程序,输入页面:input.do, 一个文本框,输入信息后,点确确定,跳转到另一页面,显示welcome,**,够简单了吧!为了开发简便快捷,我是在eclipse+myeclipse下完成的,下面我把代码贴出,再加点解释:
Struts-config.xml
<struts-config>
<data-sources />
<form-beans >
<form-bean name="helloWorld" type="com.yourcompany.struts.form.HelloWorldForm" />
</form-beans>
<action-mappings >
<action
attribute="helloWorld"
name="helloWorld"
path="/helloWorld"
scope="request"
type="com.yourcompany.struts.action.HelloWorldAction">
<forward name="show" path="/show.jsp" />
</action>
<action forward="/input.jsp" path="/input" />
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
很简单的一个结构,一个input.do进入的输入页面input.jsp,击点确定,跳转到helloworld.do,经他处理后,跳转到show, that’s OK!
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>
<jsp-config>
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
HelloWorldAction类:
package com.yourcompany.struts.action;
//节省长度,导入的类就不贴了
publicclass HelloWorldAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HelloWorldForm helloworld=(HelloWorldForm)form;
request.setAttribute("helloWorld", helloworld.getMsg());
return mapping.findForward("show");
}
}
HelloWorldForm类:
package com.yourcompany.struts.form;
publicclass HelloWorldForm extends ActionForm {
privatestaticfinallongserialVersionUID = 1L;
private String msg;
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
returnnull;
}
publicvoid reset(ActionMapping mapping, HttpServletRequest request) {
}
public String getMsg() {
returnmsg;
}
publicvoid setMsg(String msg) {
this.msg = msg;
}
}
input.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title><bean:message key="title_input"/></title>
</head>
<body>
<html:form action="/helloWorld" method="POST">
<bean:message key="welcome"/><html:text property="msg"/>
<html:submit>sumbit</html:submit>
</html:form>
</body>
</html:html>
show.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title><bean:message key="title_show"/></title>
</head>
<body>
<bean:message key="input"/>"${helloWorld}"<br/>
</body>
</html:html>
无论哪种方法都要在struts-config.xml里注册一下Spring插件:
在struts-config.xml中加上: (红色为加入部分)
<message-resources parameter="ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
为了体现Spring的IOC,我们再加多几个类:
一个接口:
一个接口:
package com.yourcompany.struts.action;
import com.yourcompany.struts.form.HelloWorldForm;
public interface HelloWorldService {
public abstract String addMesg(HelloWorldForm helloworld);
}
实现这个接口的类:
package com.yourcompany.struts.action;
import com.yourcompany.struts.form.HelloWorldForm;
public class HelloWorldServiceImpl implements HelloWorldService{
public String addMesg(HelloWorldForm helloworld) {
return helloworld.getMsg();
}
}
Spring的配置文件: (位置/WEB-INF/applicationContext.xml)
<?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="helloWorldService" class="com.yourcompany.struts.action.HelloWorldServiceImpl"></bean>
</beans>
准备工作完成,下一步开始整合