`

struts2针对几种场景的配置

阅读更多
首先是web.xml的配置
<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>*.action</url-pattern>
	</filter-mapping>  
		
	<servlet>  
        <servlet-name>CXFServlet</servlet-name>  
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
  
    <servlet-mapping>  
        <servlet-name>CXFServlet</servlet-name>  
        <url-pattern>/webservice/*</url-pattern>  
    </servlet-mapping>

我用的struts2的版本是2.3.4.1,所以这里的<filter>应该是StrutsPrepareAndExecuteFilter,不再是旧的DispatcherFilter

另外这里的<filter-mapping>,我配的不是/*,而是*.action,目的是不把特殊路径的请求,交给struts2处理,比如下面的/webservice/*,就不要经过struts2

下面是struts.xml的配置
<package name="bookManage" extends="json-default" namespace="/book">
		
		<interceptors>
			
			<interceptor name="loginInterceptor" class="loginInterceptor" />
			
			<interceptor-stack name="secureStack">
				<interceptor-ref name="loginInterceptor" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
			
		</interceptors>
		
		<default-interceptor-ref name="secureStack" />
		
		<global-results>
             <result name="login" type="redirectAction">../login.action</result>
        </global-results>
		
		<action name="list" class="bookAction" method="list">
			<result name="success">../jsp/bookManage/bookList.jsp</result>
		</action>
		
		<action name="delete" class="bookAction" method="delete">
			<result name="success" type="redirectAction">list.action</result>
		</action>
		
		<action name="originAjax" class="bookAction" method="originAjax" />

		<action name="pluginAjax" class="bookAction" method="pluginAjax">
			<result type="json">
				<param name="excludeNullProperties">true</param>
			</result>
		</action>
		
	</package>

以上的配置有简化,分别针对4种不同的场景:

第一种,Action处理后跳转到jsp页面
<action name="list" class="bookAction" method="list">
			<result name="success">../jsp/bookManage/bookList.jsp</result>
		</action>

这里默认的resultType是dispatcher

对应的Action写法
public String list() {
		books = bookService.getAllBooks();
		return SUCCESS;
	}


第二种,Action处理后,流转到另外一个Action,相当于Servlet规范中的redirect
<action name="delete" class="bookAction" method="delete">
			<result name="success" type="redirectAction">list.action</result>
		</action>

这里的resultType是redirectAction

对应的Action写法
public String delete() {
		bookService.deleteBookById(id);
		return SUCCESS;
	}


第三种,在Action中直接写响应,不流转
<action name="originAjax" class="bookAction" method="originAjax" />

这里就没有<result>元素

对应的Action写法
public void originAjax() throws IOException {
		HttpServletResponse response = ServletActionContext.getResponse();
		PrintWriter writer = response.getWriter();
		writer.print("hello " + ajaxField);
		writer.flush();
		writer.close();
	}


第四种,通过json插件,返回json字符串,不流转
<action name="pluginAjax" class="bookAction" method="pluginAjax">
			<result type="json">
				<param name="excludeNullProperties">true</param>
			</result>
		</action>

这里的resultType是json,这种方式本质上和第三种一样

对应的Action写法
public String pluginAjax() {
		ajaxField = "hello " + ajaxField;
		return SUCCESS;
	}

另外,这里面配置了拦截器、拦截器栈、全局result,可以把这些东西提取到公共的package里,让其它的业务子package来extends
分享到:
评论

相关推荐

    struts2错误显示

    Struts2提供了几种内置的方式用于显示验证错误信息: 1. **全局错误信息显示**:在页面的特定区域集中显示所有验证错误信息。 - **示例代码**: ```xml &lt;s:fielderror cssStyle="color:red"&gt;&lt;/s:fielderror&gt; ```...

    struts2标签库实验报告.docx

    通过实验,学员能够掌握Struts2中几个常用标签(如`&lt;s:radio&gt;`、`&lt;s:select&gt;`、`&lt;s:token&gt;`)的应用,并理解OGNL表达式的基本用法。这些知识点对于初学者来说至关重要,因为它们构成了Struts2应用开发的基础。 ####...

    struts2和servlet的共存问题

    针对上述问题,通常有以下几种解决方法: ##### 方法1:统一添加`.servlet`后缀 - **具体操作**:在所有的Servlet请求URL后面添加`.servlet`后缀,例如将`/myServlet`改为`/myServlet.servlet`。 - **实现步骤**:...

    研磨Struts2

    Struts2提供了多种类型的Result,如dispatcher、redirect、chain等,每种类型都有其特定的应用场景。 - **dispatcher**:将请求转发到指定的JSP页面。 - **redirect**:发送HTTP重定向命令给客户端,使其重新发送一...

    Struts2数据校验

    接下来,我们将深入探讨Struts2的几种数据校验方式: 1. **注解式校验**:在Action类的字段上直接使用Java Bean Validation提供的注解,如`@NotBlank`、`@Min`、`@Max`等。这种方式简单直观,适用于快速开发。例如...

    Struts2-Scan-master.zip

    Struts2-Scan-master.zip 是一个与Struts2安全扫描相关的压缩包,主要涉及的是针对Struts2框架的漏洞检测。Struts2是Java后端开发中广泛使用的一个MVC框架,由于其流行性,安全问题一直是开发者关注的重点。Python...

    struts2乱码处理

    本文将针对Struts2中的中文乱码问题提供几种解决方案,包括在不同场景下的处理方法。 #### 解决方案概述 **方案一**:适用于前台通过URL传递中文参数的情况,主要利用`jQuery`对中文参数进行编码处理。 **方案二*...

    uploadify+struts2多文件上传实例

    `uploadify`与`Struts2`结合的多文件上传实例就是一个典型的解决方案,尤其针对跨浏览器兼容性问题,如在Firefox下的session问题。下面我们将深入探讨这两个技术以及它们如何协同工作。 `Uploadify`是一个基于...

    Struts教程

    本章节针对初学者可能会遇到的一些常见问题进行了汇总和解答,帮助读者更好地理解和运用Struts框架。 #### 十三、对象到XML转换:Struts中的Bean到XML转换 Struts框架提供了将Java Bean对象序列化为XML文件的功能。...

    Struts中文文档.rar

    7. **拦截器**:Struts 2引入了拦截器(Interceptor)的概念,这是一种强大的增强功能,可以用于日志记录、权限验证、事务管理等多种场景。文档可能会详细介绍如何编写和配置拦截器。 8. **最佳实践和案例研究**:...

    struts课件2

    Struts框架提供了几种方法来防止表单的重复提交: - **Token机制**:通过在每个表单中添加一个隐藏字段来记录一个唯一的token,并在服务器端验证这个token的有效性。如果验证通过,则继续处理表单;否则拒绝处理。 ...

    Spring配置的5种方式

    除了上述方式外,还有以下几种事务配置方法: 1. **基于AspectJ的事务配置**: - 使用AspectJ可以更加灵活地配置事务边界,适用于复杂的事务管理场景。 - 示例配置可能涉及`@Aspect`和`@Before`等注解。 2. **...

    Struts的乱码问题

    针对上述问题,我们可以采取以下几种方法来解决Struts框架下的乱码问题: 1. **设置正确的字符集**: - **在Tomcat配置文件中设置**:修改`server.xml`文件中的Connector节点,添加`URIEncoding="UTF-8"`属性,...

    struts 学习资料

    Struts框架采用的是**Model2**架构,这是一种特定于Web应用程序的MVC实现方式。在Model2架构中,控制器的角色更为突出,主要负责接收用户请求、调用模型中的业务逻辑并确定使用哪个视图来渲染响应。 ##### 2.2 ...

    Hibernate+struts分页

    本项目“Hibernate+Struts分页”是针对基于Sqlserver2000数据库的应用程序设计的,它整合了两个流行的Java开发框架——Hibernate(持久层框架)和Struts(MVC框架),以实现高效且用户友好的数据浏览功能。...

    Struts新闻管理系统学习更新版

    Struts新闻管理系统学习更新版是一个基于Struts框架的典型应用,旨在帮助开发者理解和掌握如何使用Struts构建实际的Web应用程序,特别是针对新闻管理这样的业务场景。这个系统可能包含了新闻发布、编辑、删除以及...

    struts处理中文乱码问题总结

    根据乱码出现的位置与场景不同,可将其大致分为以下几种类型: 1. **页面显示中文乱码** 2. **传递参数中文乱码** 3. **国际化资源文件乱码** 下面我们将针对每一种情况,详细介绍具体的解决方案。 #### 三、页面...

    基于Struts和Hibernate的WAP业务

    在IT行业中,Web应用程序开发是不可或缺的一部分,而Struts和Hibernate是两个非常重要的框架,它们在构建企业级...通过实践,可以深入理解Struts和Hibernate的协同工作方式,以及如何针对特定环境(如WAP)进行优化。

Global site tag (gtag.js) - Google Analytics