Struts2中type类型有哪些?Struts2默认能解决get和post提交方式的乱码问题吗?Struts2中如何配置拦截器?

2 篇文章 0 订阅

Struts2中type类型有哪些?
Struts2中type类型指的是结果类型,用于指定Action执行完成后如何返回结果给客户端。Struts2框架提供了多种结果类型,以满足不同的业务需求和页面跳转方式。以下是一些常见的Struts2结果类型:

dispatcher:这是默认的结果类型,相当于servlet的forward,即服务器端跳转。客户端看到的是Struts2中配置的地址,而不是真正页面的地址。一般用于跳转到JSP页面。
redirect:用于页面重定向,即客户端跳转。这种类型的结果会发送一个新的请求到服务器。
redirectAction:这也是一种重定向,但它重定向到另一个Action,而不是直接跳转到页面。
chain:用于实现从一个Action中跳转到该Action中的另外一个方法,并且携带参数,参数不会丢失。
stream:一般用于文件下载操作。
PlainText:返回普通文本结果。
Velocity:用于与Velocity模板技术的集成。
XSLT:用于与XML/XSLT技术的集成。
HttpHeader:返回报文头给用户。
json:返回JSON格式的数据,常用于前后端数据交互。
除了上述常见的结果类型,Struts2还支持其他扩展的结果类型,如freemarker等,这些扩展类型通常通过配置额外的插件或库来实现。

在实际应用中,根据具体的业务需求和页面跳转逻辑,可以选择合适的结果类型来配置Struts2的Action。通过在struts.xml配置文件中为Action指定不同的result标签,并设置相应的type属性,即可实现不同的结果类型。

Struts2默认能解决get和post提交方式的乱码问题吗?
Struts2默认不能解决GET请求中的中文乱码问题,但能在一定程度上支持POST请求的编码处理。

对于POST请求,Struts2提供了一个默认的过滤器,该过滤器通常能够处理编码问题,使得在POST请求中一般不会出现中文乱码。然而,对于GET请求,由于HTTP协议对GET请求的参数长度有限制,并且GET请求的参数会附加在URL后面,这可能导致在传输过程中出现中文乱码问题。

要解决这个问题,通常需要在服务器端和客户端之间设置一个统一的编码,如UTF-8,并在服务器端接收请求时进行相应的编码设置。对于GET请求,仅仅通过request.setCharacterEncoding(“UTF-8”)这种方式是无法解决中文乱码问题的,因为该方法只对POST请求有效。因此,可能需要采取其他方式,如在Struts2的配置文件中设置编码,或者对URL进行编码和解码处理。

请注意,Struts2的默认配置和过滤器设置可能会因版本不同而有所差异,因此在实际开发中,建议详细阅读官方文档和相关的配置说明,以确保正确处理中文乱码问题。

Struts2中如何配置拦截器?
在Struts2中,拦截器(Interceptor)是一种动态拦截Action调用的对象,类似于Servlet中的过滤器。拦截器可以在Action的业务逻辑处理方法(execute())之前或之后执行特定的代码,以完成诸如权限检查、日志记录、数据转换等任务。

配置Struts2拦截器通常涉及以下步骤:

创建拦截器类:
首先,你需要创建一个Java类来实现拦截器。这个类需要实现com.opensymphony.xwork2.interceptor.Interceptor接口,或者继承com.opensymphony.xwork2.interceptor.AbstractInterceptor抽象类。你需要覆盖init()、destroy()和intercept(ActionInvocation invocation)方法。其中,intercept()方法是拦截器的核心,它决定了拦截器的行为。

java
public class MyInterceptor implements Interceptor {
public void init() {
// 初始化代码
}

public void destroy() {  
    // 销毁代码  
}  

public String intercept(ActionInvocation invocation) throws Exception {  
    // 拦截器逻辑  
    // ...  
    // 继续调用Action或其他拦截器  
    return invocation.invoke();  
}  

}
在struts.xml中配置拦截器:
接下来,你需要在Struts2的配置文件struts.xml中声明并使用你创建的拦截器。

<struts>  
    <package name="default" extends="struts-default">  
        <!-- 声明拦截器 -->  
        <interceptors>  
            <interceptor name="myInterceptor" class="com.example.MyInterceptor"/>  
        </interceptors>  
 
        <!-- 在Action中使用拦截器 -->  
        <action name="myAction" class="com.example.MyAction">  
            <!-- 引用拦截器 -->  
            <interceptor-ref name="myInterceptor"/>  
            <!-- 默认的拦截器栈也可以包含 -->  
            <interceptor-ref name="defaultStack"/>  
            <result name="success">/success.jsp</result>  
        </action>  
    </package>  
</struts>

在标签内声明你的拦截器,并在标签内通过标签引用它。通常,你会引用默认的拦截器栈defaultStack,它包含了Struts2框架提供的一些常用拦截器。你也可以创建自定义的拦截器栈来组织你的拦截器。

配置拦截器顺序:
拦截器的执行顺序是按照它们在标签内出现的顺序来决定的。如果需要,你可以通过调整标签的顺序来改变拦截器的执行顺序。

使用拦截器参数:
你还可以为拦截器添加参数,以控制其行为。这可以在标签内通过子标签实现。

通过以上步骤,你可以配置Struts2的拦截器来增强你的应用程序的功能和安全性。拦截器在Struts2中是一个强大的特性,它们可以用于各种目的,如输入验证、权限检查、日志记录等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值