关于struts2中重定向配置文件的问题

南燕北灰 发布于 2016/05/08 23:22
阅读 435
收藏 0
请教下,现在我写了一个action,其中有一段if判断,代码如下,
  JiuScShippingAddress bean=new JiuScShippingAddress();
          Map<String, Object> session=ActionContext.getContext().getSession();
      JiuDnUser u =(JiuDnUser)session.get("user");
      if(u.getUser_id() != null ) {
     USER_ID = u.getUser_id();
     }else{
     HttpServletResponse response = ServletActionContext.getResponse();
     HttpServletRequest request = ServletActionContext.getRequest();
     response.sendRedirect(request.getContextPath()+"/WebRoot/exchangeWine/dl.jsp");
     }
我本意是,如果条件为false的话,跳转到登录的页面重新登录,不知道这样的重定向方式对不对?还需要在struts.xml的配置文件中做什么修改吗?
加载中
1
李永china
李永china

引用来自“李永china”的评论

你这是struts2的话 没有这么麻烦 如果是servlet的话 确实这么重定向

引用来自“李永china”的评论

回复 @南燕北灰 : 我的解决思路:当为false时 return "login";
在struts配置文件中有两个途径来转到登录页面
1:设置一个全局result   
<global-results>
        <result name="login">你的登录页面</result>
 </global-results>
2:在本action中设置一个局部的result
<result name="login">你的登录页面</result>

引用来自“南燕北灰”的评论

这个action中的

 JiuScShippingAddress bean=new JiuScShippingAddress();
        Map<String, Object> session=ActionContext.getContext().getSession();
    JiuDnUser u =(JiuDnUser)session.get("user");
    if(u.getUser_id() != null ) {
    USER_ID = u.getUser_id();
    }else{
   
    return "fail";
    }
这是配置文件中的

<!-- 保存地址  -->
<action name="save" class="com.zxcl.jqmobile.save.SaveAction">
   <result name="save">/exchangeWine/editor.jsp</result>
   <result name="fail">/exchangeWine/dl.jsp</result>
<result name="valid" type="stream">
<param name="contentType">text/html</param>
              <param name="inputName">inputStream</param>
</result>
<interceptor-ref name="defaultStack">
</interceptor-ref>
</action>
你说的是这个意思吧?

public class CheckLoginInterceptor extends AbstractInterceptor {    

    public String intercept(ActionInvocation invocation) throws Exception {

        String actionName = invocation.getInvocationContext().getName();
        Map session = invocation.getInvocationContext().getContext().getSession();
        Users user = (Users) session.get("users");
        if( actionName.equal("loginAction")){
            return invocation.invoke();
        }
        if(user == null){
            return "login";
        }
        return invocation.invoke();
    }
}
struts.xml配置拦截器栈
<interceptors>
    <interceptor name="CheckLoginInterceptor" class="拦截器类全名"/>
    <interceptor-stack name="checkManagerStack">
        <interceptor-ref name="defaultStack"/>
        <interceptor-ref name="CheckLoginInterceptor"/>
    </interceptor-stack>
</interceptors>

<default-interceptor-ref name="checkManagerStack"/>


没用编译器写 凑合着看吧

0
李永china
李永china
你这是struts2的话 没有这么麻烦 如果是servlet的话 确实这么重定向
南燕北灰
南燕北灰
嗯,是struts2中的一个action的一段代码, 应该怎么重定向啊
0
李永china
李永china

引用来自“李永china”的评论

你这是struts2的话 没有这么麻烦 如果是servlet的话 确实这么重定向
回复 @南燕北灰 : 我的解决思路:当为false时 return "login";
在struts配置文件中有两个途径来转到登录页面
1:设置一个全局result   
<global-results>
        <result name="login">你的登录页面</result>
 </global-results>
2:在本action中设置一个局部的result
<result name="login">你的登录页面</result>
Mx_JHJ
Mx_JHJ
我觉得这个最实在
0
南燕北灰
南燕北灰

引用来自“李永china”的评论

你这是struts2的话 没有这么麻烦 如果是servlet的话 确实这么重定向

引用来自“李永china”的评论

回复 @南燕北灰 : 我的解决思路:当为false时 return "login";
在struts配置文件中有两个途径来转到登录页面
1:设置一个全局result   
<global-results>
        <result name="login">你的登录页面</result>
 </global-results>
2:在本action中设置一个局部的result
<result name="login">你的登录页面</result>

这个action中的

 JiuScShippingAddress bean=new JiuScShippingAddress();
        Map<String, Object> session=ActionContext.getContext().getSession();
    JiuDnUser u =(JiuDnUser)session.get("user");
    if(u.getUser_id() != null ) {
    USER_ID = u.getUser_id();
    }else{
   
    return "fail";
    }
这是配置文件中的

<!-- 保存地址  -->
<action name="save" class="com.zxcl.jqmobile.save.SaveAction">
   <result name="save">/exchangeWine/editor.jsp</result>
   <result name="fail">/exchangeWine/dl.jsp</result>
<result name="valid" type="stream">
<param name="contentType">text/html</param>
              <param name="inputName">inputStream</param>
</result>
<interceptor-ref name="defaultStack">
</interceptor-ref>
</action>
你说的是这个意思吧?

南燕北灰
南燕北灰
回复 @李永china : 谢谢问题解决了
李永china
李永china
回复 @南燕北灰 : 那是拦截器方式 写在非登录action中 会造成代码的臃肿。我手头没有myeclipse,用edit写的, 没有测试, 但是应该可以用的 。
南燕北灰
南燕北灰
回复 @李永china : 有人说是因为没有请求,所以没有跳页,告诉我先请求,如果为空再跳转到登陆页,这个请求应该怎么写呀
李永china
李永china
回复 @南燕北灰 : 那你debug一下
南燕北灰
南燕北灰
回复 @李永china : 没有报错了,但是也不跳转页面...
下一页
返回顶部
顶部