- 浏览: 564493 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
bo_hai:
快速排序:https://bo-hai.iteye.com/b ...
插入排序、选择排序、冒泡排序 简单实例 -
bo_hai:
参考:https://bo-hai.iteye.com/blo ...
插入排序、选择排序、冒泡排序 简单实例 -
bo_hai:
JDK1.8后,解决问题的办法就简单啦:List<Int ...
List 中去除 null 方法讨论 -
bo_hai:
上述两种办法都不是最好的单例模式。
安全发布单例模式 -
bo_hai:
我来评论一下。
MySql 删除重复数据的方法
一、在使用struts2进行开发时,struts2默认支持的文件JSP。这点我们可以在 struts2-core-xxx.jar中 的struts-default.xml 中看到:
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
我们可以看到struts2默认返回支持的文件类型是:org.apache.struts2.dispatcher.ServletDispatcherResult。
二、如果我们的项目显图层使用的文件是FTL,那么我们要如何修改struts2默认的返回类型呢?解决方案如下:
1)把struts-default.xml中的
<package name="struts-default" abstract="true">
全部copy到 工程中的struts.xml文件中。struts2.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="base" extends="struts-default" abstract="true"> <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" /> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult" default="true"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <result-type name="redirect-action" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="plaintext" class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types> <interceptors> <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/> <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/> <interceptor name="chain" class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/> <interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/> <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/> <interceptor name="createSession" class="org.apache.struts2.interceptor.CreateSessionInterceptor" /> <interceptor name="debugging" class="org.apache.struts2.interceptor.debugging.DebuggingInterceptor" /> <interceptor name="externalRef" class="com.opensymphony.xwork2.interceptor.ExternalReferencesInterceptor"/> <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/> <interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/> <interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/> <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/> <interceptor name="logger" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/> <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> <interceptor name="scopedModelDriven" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/> <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/> <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/> <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/> <interceptor name="scope" class="org.apache.struts2.interceptor.ScopeInterceptor"/> <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/> <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/> <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/> <interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/> <interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/> <interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/> <interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/> <interceptor name="store" class="org.apache.struts2.interceptor.MessageStoreInterceptor" /> <interceptor name="checkbox" class="org.apache.struts2.interceptor.CheckboxInterceptor" /> <interceptor name="profiling" class="org.apache.struts2.interceptor.ProfilingActivationInterceptor" /> <interceptor name="roles" class="org.apache.struts2.interceptor.RolesInterceptor" /> <!-- Basic stack --> <interceptor-stack name="basicStack"> <interceptor-ref name="exception"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> </interceptor-stack> <!-- Sample validation and workflow stack --> <interceptor-stack name="validationWorkflowStack"> <interceptor-ref name="basicStack"/> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> </interceptor-stack> <!-- Sample file upload stack --> <interceptor-stack name="fileUploadStack"> <interceptor-ref name="fileUpload"/> <interceptor-ref name="basicStack"/> </interceptor-stack> <!-- Sample model-driven stack --> <interceptor-stack name="modelDrivenStack"> <interceptor-ref name="modelDriven"/> <interceptor-ref name="basicStack"/> </interceptor-stack> <!-- Sample action chaining stack --> <interceptor-stack name="chainStack"> <interceptor-ref name="chain"/> <interceptor-ref name="basicStack"/> </interceptor-stack> <!-- Sample i18n stack --> <interceptor-stack name="i18nStack"> <interceptor-ref name="i18n"/> <interceptor-ref name="basicStack"/> </interceptor-stack> <interceptor-stack name="paramsPrepareParamsStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="params"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="i18n"/> <interceptor-ref name="chain"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel</param> </interceptor-ref> </interceptor-stack> <interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="i18n"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="profiling"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> <!-- The completeStack is here for backwards compatibility for applications that still refer to the defaultStack by the old name --> <interceptor-stack name="completeStack"> <interceptor-ref name="defaultStack"/> </interceptor-stack> <!-- Sample execute and wait stack. Note: execAndWait should always be the *last* interceptor. --> <interceptor-stack name="executeAndWaitStack"> <interceptor-ref name="execAndWait"> <param name="excludeMethods">input,back,cancel</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> <interceptor-ref name="execAndWait"> <param name="excludeMethods">input,back,cancel</param> </interceptor-ref> </interceptor-stack> <!-- Deprecated name forms scheduled for removal in Struts 2.1.0. The camelCase versions are preferred. See ww-1707 --> <interceptor name="external-ref" class="com.opensymphony.xwork2.interceptor.ExternalReferencesInterceptor"/> <interceptor name="model-driven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> <interceptor name="static-params" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/> <interceptor name="scoped-model-driven" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/> <interceptor name="servlet-config" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/> <interceptor name="token-session" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/> </interceptors> <default-interceptor-ref name="defaultStack"/> </package> </struts>
2)一般情况下,我们会把上面的文件命名方struts-base.xml,然后在struts.xml 引入上面的文件:struts.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.locale" value="zh_CN"/> <constant name="struts.i18n.encoding" value="UTF-8"/> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.ui.theme" value="simple"/> <constant name="struts.action.extension" value="action" /> <constant name="struts.devMode" value="true"/> <constant name="struts.i18n.reload" value="true"/> <include file="struts-base.xml" /> <!-- <include file="META-INF/webapp/struts-test.xml" /> --> </struts>
3)struts.xml 还可以引入struts-test.xml等文件。
发表评论
-
nginx 配置 CORS 支持跨域访问
2014-11-11 20:26 11600CSS代码设置了一些字体,如果跨域访问这些字体,就会加载失败 ... -
lockInterruptibly 和lock的区别
2014-09-03 11:04 3270这是个被无数人写过并还会被其他人继续写下去的blog。 代 ... -
Spring MVC 的单元测试实例
2014-08-15 16:48 882一、先定义实例: public class BaseTes ... -
HTTPClient 简单使用
2014-08-15 13:47 1102HttpClient 的用模拟http请求的工具,一般用在 ... -
tomcat 配置虚拟主机实例
2014-07-29 14:20 1512一、先来解释一下虚拟主机的概念:在一个tomcat上放多个工 ... -
Eclipse3.6 安装EGit
2014-07-08 21:56 591Eclipse3.6 安装EGit地址是 http://do ... -
ThreadPoolExecutor 中饱和策略分析
2014-07-03 15:25 2270import java.util.concurrent.Ti ... -
FutureTask 实例
2014-06-29 10:56 655先来总结一下FutureTask使用场景: 如果不想分支线 ... -
ReadWriteLock 使用实例
2014-06-28 20:21 878首先来讨论ReadWriteLock 类的使用场景,记住一句 ... -
安全发布单例模式
2014-06-27 17:24 6851、最简单的方法: public class Singl ... -
JAVA notifyAll wait 实例
2014-06-27 13:55 526两个线程,分别有两数据结构:1到10的数据和A到E的字符。 ... -
获取机器CPU数量的方法
2014-06-22 15:58 631public class CPUNum { /** ... -
动态代理的实现
2014-06-17 21:26 503public interface IHelloWorld ... -
线程同步优化实例
2014-06-11 17:56 539代码如下: package com.bohai.thre ... -
JavaScript 遍历JSON 获取key value
2014-04-30 16:20 621if (!$.isEmptyObject(subProdIn ... -
计算器算法(支持加减乘除括号)
2014-04-19 17:53 5621import java.util.ArrayList; i ... -
实用工具类 && CollectionUtils
2014-04-19 13:53 7874import java.util.ArrayList; ... -
解决fatal: unable to connect to github.com问题
2014-04-08 16:43 2213问题: 在使用Aptana Studio3 ... -
JAVA多线程 Semaphore 应用
2014-01-24 16:04 533import java.util.concurrent.Ex ... -
JAVA多线程 Exchanger 应用
2014-01-24 15:42 693import java.util.concurrent.Ex ...
相关推荐
在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该返回JSON格式的数据。 Struts2 JSON Plugin 2.3.8版本包含了以下关键特性: 1. 自动处理Action结果:当...
Struts2还支持OGNL(Object-Graph Navigation Language)作为默认表达式语言,用于在视图和模型之间传递数据。 **Sitemesh框架** Sitemesh的工作原理是通过拦截HTTP请求,将页面内容包裹在预先定义的装饰模板中。...
在Struts2中,Result Type是由`struts-default.xml`配置文件中的`<package>`元素的`defaultResultType`属性指定的,默认情况下,这个值通常是“dispatcher”,意味着Action完成后会使用Dispatcher Result来渲染JSP...
6. **OGNL表达式语言(OGNL)**:Struts2使用OGNL作为默认的表达式语言,用于在Action和视图之间传递数据。`ognl`包中的类和接口实现了OGNL的解析和执行。 7. **异常处理(Exception Handling)**:在`struts2-core...
Dispatcher Result 配置是 Struts2 框架中默认的 Result 配置类型。这种配置类型用于将结果.redirect 到一个 JSP 页面。如果在 Action 配置中没有指定其他的 Result 配置类型,那么 Dispatcher Result 配置将被使用...
Struts2-Json-Plugin 是一个专门为 Struts2 框架设计的插件,它使得在Struts2中处理Ajax请求并返回JSON数据变得更加简便。这个插件提供了"json"结果类型,允许Action直接被序列化为JSON格式,极大地简化了开发过程。...
3. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认的表达式语言,用于在Action对象和JSP页面之间传递数据。OGNL提供了一种简洁的方式来访问和操作Java对象的属性,增强了视图和模型之间的...
2. **序列化对象**:默认情况下,Struts2会将Action类的公共属性自动转换为JSON格式。如果需要自定义序列化行为,可以使用`@SkipValidation`和`@IncludeProperties`注解。 3. **处理请求参数**:如果需要从请求中...
- OGNL是Struts2默认的表达式语言,用于在Action对象和视图之间传递数据。 在Eclipse中导入这些源码后,你可以看到具体的类和方法实现,如ActionSupport、ActionContext、DefaultActionInvocation、Interceptor栈...
在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨Struts2中的result配置以及各种视图转发类型。 首先,让我们理解Result的基本...
### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...
##### 1-2、struts.xml的配置 - **添加约束**:为了确保`struts.xml`文件格式正确且易于维护,需要在文件开头添加DTD声明。例如: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...
Struts2是一个流行的Java Web框架,它为开发者提供了一种结构化的方式来构建MVC(Model-View-Controller)应用程序。在现代Web应用中,JSON(JavaScript Object Notation)被广泛用作数据交换格式,因为它轻量级、...
### STRUTS2:零配置插件CodeBehind详解 #### 一、概述 Struts2框架作为Java Web开发中的一款重要工具,在简化Web应用程序开发方面提供了丰富的功能与灵活性。随着框架的发展,Struts2社区不断推出新的插件和技术...
4. `freemarker-x.x.x.jar`:虽然不是直接处理JSON,FreeMarker是Struts2默认的视图技术,有时可能需要将JSON数据与FreeMarker模板结合使用。 5. `struts2-core-x.x.x.jar`:Struts2的核心库,包含Action、...
4. **表达式语言(OGNL)**:OGNL(Object-Graph Navigation Language)是Struts2默认的数据绑定和表达式语言,用于在Action与视图之间传递数据。 5. **ActionContext**:它封装了请求、响应以及线程相关的上下文...
这里 `result=success` 表示的是 Struts 框架在执行完 Action 后返回的结果状态,默认情况下是 `success`,也可以是其他状态如 `input` 等。 **2. 使用监听器** - 在实际开发中,通过监听器可以在 Action 执行...
Struts2 中常用 Result 类型(type)的用法和出现的问题 Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三...
### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...
3. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。开发者可以通过OGNL表达式轻松访问对象属性,增强了数据绑定的能力。 4. **结果类型...