gpt4 book ai didi

java - Struts 2 中获取请求

转载 作者:行者123 更新时间:2023-12-01 14:02:29 24 4
gpt4 key购买 nike

我是 struts2 的新手。在应用程序中有一个名为 userLogin 的操作。当我输入 url http://servername:9090/appName/userLogin 时,它应该将请求直接转发到/jsp/account/login.jsp。它不应该调用操作方法。我如何确保当请求通过 get 时然后转发到登录页面,否则如果请求是 Post 那么它应该调用该操作

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.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default">
<action name="index">
<result>jsp/index.jsp</result>
</action>

<action name="userLogin" class="com.ril.tc.action.LoginAction">
<result>jsp/account/login.jsp</result>
<result name="success">jsp/index.jsp</result>
<result name="error">jsp/account/login.jsp</result>
</action>

<action name="ministatement" class="com.ril.tc.action.MiniStatementAction">
<result>jsp/account/ministatement.jsp</result>
<result name="success">jsp/account/ministatementdetails.jsp</result>
<result name="error">jsp/account/ministatement.jsp</result>
</action>
</package>
</struts>

最佳答案

<强>1。您只需在业务方法执行之前检查操作方法中的请求方法即可。

      It will add  2-3 lines of java code in action method and  a line modification in xml configuration.
<小时/>

<强>2。或者你可以通过使用拦截器来严格限制Action方法的执行。

    Interceptor requires a seperate java class and a few lines of xml configuration.
<小时/>

方法一

a) Java 代码

public String execute (){  // or your method name

if(ServletActionContext.getRequest().getMethod().equals("GET")){

return "getrequest";
}

........
//your business logic

}

b) xml配置

<action name="userLogin" class="com.ril.tc.action.LoginAction">
<result name="getrequest">jsp/account/login.jsp</result>
<result name="success">jsp/index.jsp</result>
<result name="error">jsp/account/login.jsp</result>
</action>
<小时/>

方法2。

a) Java 代码

public GetRequestFilterInterceptor extends AbstractInterceptor{
@Override
public void intercept (ActionInvocation action){
if(ServletActionContext.getRequest().getMethod(). equals("GET")){
return "getrequest";
}else{
action.invoke();
}

}
}

b) Xml配置

<struts>
<package name="default" extends="struts-default">
<interceptors>

<interceptor name="getUrlFilter" class="packagename.GetRequestFilterInterceptor"/>

<interceptor-stack name="requestFilter">

<interceptor-ref name="getUrlFilter"/>
<interceptor-ref name="defaultStack"/>

</interceptor-stack>

</interceptors>
......

<action name="userLogin" class="com.ril.tc.action.LoginAction">

<interceptor-ref name="requestFilter"/>

<result name="getrequest">jsp/account/login.jsp</result>
<result name="success">jsp/index.jsp</result>
<result name="error">jsp/account/login.jsp</result>
</action>

</package>

</struts>
<小时/>

如果你想过滤很多方法,我建议你使用拦截器。如果您只想过滤一种方法,第一个更好。

关于java - Struts 2 中获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com