spring整合struts2过程详解
这篇文章主要介绍了spring整合struts2过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先将以下jar包加入到lib文件夹中:
基础目录:
person.java
package com.gong.spring.struts2.beans; public class person { private string username; public void setusername(string username) { this.username = username; } public void hello(){ system.out.println("my name is " + username); } }
personservice.java
package com.gong.spring.struts2.services; public class personservice { public void save(){ system.out.println("personservice's save...."); } }
personaction.java
package com.gong.spring.struts2.actions; import com.gong.spring.struts2.services.personservice; public class personaction { private personservice personservice; public void setpersonservice(personservice personservice) { this.personservice = personservice; } public string execute(){ system.out.println("execute...."); personservice.save(); return "success"; } }
基本流程如下:在personaction装配personservice,在execute方法中打印相关信息并调用personservice的save方法,最后返回"success"。在personservice中的save方法输出一句话。
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.xsd"> <bean id="person" class="com.gong.spring.struts2.beans.person"> <property name="username" value="spring"></property> </bean> <bean id="personservice" class="com.gong.spring.struts2.services.personservice"></bean> <!-- 注意: 在 ioc 容器中配置 struts2 的 action 时, 需要配置 scope 属性, 其值必须为 prototype --> <bean id="personaction" class="com.gong.spring.struts2.actions.personaction" scope="prototype"> <property name="personservice" ref="personservice"></property> </bean> </beans>
在applicationcontext中配置相关bean。
stuts.xml
<?xml version="1.0" encoding="utf-8" ?> <!doctype struts public "-//apache software foundation//dtd struts configuration 2.3//en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.dynamicmethodinvocation" value="false" /> <constant name="struts.devmode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!-- spring 整合 struts2 时, 在 struts2 中配置的 spring 的 action 的 class 需要指向 ioc 容器中该 bean 的 id --> <action name="person-save" class="personaction"> <result>/success.jsp</result> </action> </package> </struts>
在struts.xml中配置action时,class需要使用applicationcontext.xml中bean的id。结果返回给success.jsp。
web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="webapp_id" version="2.5"> <!-- 配置 spring 配置文件的名称和位置 --> <context-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:applicationcontext.xml</param-value> </context-param> <!-- 启动 ioc 容器的 servletcontextlistener --> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <!-- 配置 struts2 的 filter --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
在web.xml中需要两个部分:一个是让springioc容器在web应用服务加载时就进行创建。另一个就是配置struts2的过滤器。
index.jsp
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>insert title here</title> </head> <body> <a href="person-save" rel="external nofollow" >person save</a> </body> </html>
sucess.jsp
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>insert title here</title> </head> <body> <h4>success page</h4> </body> </html>
test.jsp
<%@page import="com.gong.spring.struts2.beans.person"%> <%@page import="org.springframework.web.context.support.webapplicationcontextutils"%> <%@page import="org.springframework.context.applicationcontext"%> <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>insert title here</title> </head> <body> <% //1. 从 appication 域对象中得到 ioc 容器的实例 applicationcontext ctx = webapplicationcontextutils.getwebapplicationcontext(application); //2. 从 ioc 容器中得到 bean person person = ctx.getbean(person.class); //3. 使用 bean person.hello(); %> </body> </html>
启动tomacat服务器之后:
点击person save:
会跳转到succes.jsp,并在控制台输出相应的语句。
说明spring整合struts2基本是成功的了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 中国历史上的一个得道高僧!虚云禅师的参悟佛法之路!
下一篇: 毁牙的7个日常,你有没有做过?
推荐阅读
-
详解spring boot jpa整合QueryDSL来简化复杂操作
-
spring整合struts2过程详解
-
Struts2整合Spring从xml到注解
-
Spring和Mybatis整合全过程实现(idea实现)适合初学spring和mybatis
-
Spring 整合Shiro 并扩展使用EL表达式的实例详解
-
Spring 整合 Hibernate 时启用二级缓存实例详解
-
Spring Boot整合RabbitMQ开发实战详解
-
Spring Boot设置支持跨域请求过程详解
-
为什么整合Spring与Struts2的时候,必须定义Struts2 Bean的Scope
-
spring Boot与Mybatis整合优化详解