iteye_13428 2009-06-07 01:25
浏览 343
已采纳

关于struts2.1.6 中使用<s:url >

之前使用struts2.0.11.1的时候,使用 标签时,会在后面生成一段;jsessionid=xxx;在网上看了一些解决方法;

例如:

修改core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java中的getMapping()方法;
......

但是2.1.6版本中,对这个问题已经做了处理.但是在使用时,在浏览器第一次加载的时候仍然含有;jsessionid=xxx;

请高人给个解决方法..

  • 写回答

2条回答 默认 最新

  • iteye_17762 2009-06-07 10:07
    关注

    加一个过滤器代码如下:

    package com.yunfei.filter;

    import java.io.IOException;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
    import javax.servlet.http.HttpSession;

    @SuppressWarnings("deprecation")
    public class DisableUrlSessionFilter implements Filter
    {

    /** *//**
     * Filters requests to disable URL-based session identifiers. 
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
    {
        // skip non-http requests
        if (!(request instanceof HttpServletRequest))
        {
            chain.doFilter(request, response);
            return;
        }
    
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
    
        // clear session if session id in URL
        if (httpRequest.isRequestedSessionIdFromURL())
        {
            HttpSession session = httpRequest.getSession();
            if (session != null) session.invalidate();
        }
    
        // wrap response to remove URL encoding
        HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse)
        {
            @Override
            public String encodeRedirectUrl(String url) { return url; }
    
            @Override
            public String encodeRedirectURL(String url) { return url; }
    
            @Override
            public String encodeUrl(String url) { return url; }
    
            @Override
            public String encodeURL(String url) { return url; }
        };
    
        // process next request in chain
        chain.doFilter(request, wrappedResponse);
    }
    
    /** *//**
     * Unused.
     */
    public void init(FilterConfig config) throws ServletException {}
    
    /** *//**
     * Unused.
     */
    public void destroy() {}
    

    }

    在web.xml中加入filter的配置,如下:


    DisableUrlSessionFilter

    com.yunfei.filter.DisableUrlSessionFilter

    <filter-mapping>
        <filter-name>DisableUrlSessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog