RESIN服务器怎么更改源代码才能让http://www.9kf.net/?id=80中的?号变其他符号?给200分http://community.csdn.net/Expert/TopicView1.asp?id=4994981希望高手能解决一下,就是把问号去掉,传参数照样取得到。

解决方案 »

  1.   

    这个太简单了。
    其实根本不用改什么RESIN.
    你可以使用过滤器SERVLET。
    监听类似:
    http://www.9kf.net/id/80然后自己分析URL,获取最终参数。
    这种方法有一个好处:
    1、跨应用服务器,比你单纯改服务器代码好;-----------------------------
    类似代码:
    package com.ASSys.filter;import javax.servlet.Filter;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import java.io.IOException;import com.ASSys.ca.CADelegater;
    import javax.servlet.http.HttpServletRequest;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2005</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class FileFilter
        implements Filter {
      public void init(FilterConfig config) throws javax.servlet.ServletException {
      }  public void doFilter(ServletRequest request, ServletResponse response,
                           FilterChain chain) throws java.io.IOException,
          javax.servlet.ServletException {
        HttpServletRequest hrequest = (HttpServletRequest) request;
        String uri = hrequest.getServletPath();
        System.out.println(uri + "|" + uri.substring(uri.lastIndexOf("/") + 1));
        //重定向到文件下载界面
        if (uri.startsWith("/filedownload/")) {
          //按照UNID方式进行设置
          hrequest.getRequestDispatcher("/AS_SYSTEM/filedownload.jsp?UNID=" +
                                        uri.substring(uri.lastIndexOf("/") + 1)).
              forward(request, response);
        }else if (uri.startsWith("/projectdownload/")) {
          //按照项目参数方式进行设置
          int i=uri.lastIndexOf("/") ;
          String strTaskCode=uri.substring(i+1);
          String strProjectId=uri.substring(17,i);
          hrequest.getRequestDispatcher("/AS_SYSTEM/filedownload.jsp?Projectid="
                                        +strProjectId+"&Taskid=" + strTaskCode).
              forward(request, response);
        }
      }  public void destroy() {
      }
    }
    ----------------
    WEB.XML的配置
    <filter>
        <filter-name>FileFilter</filter-name>
        <filter-class>com.ASSys.filter.FileFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>FileFilter</filter-name>
        <url-pattern>/filedownload/*</url-pattern>
      </filter-mapping>
    ---------------------------
    实际情况
    http://host/filedownload/123123123
    就类似于
    http://host/filedownload?123123123
      

  2.   

    这个太简单了。
    其实根本不用改什么RESIN.
    你可以使用过滤器SERVLET。
    监听类似:
    http://www.9kf.net/id/80然后自己分析URL,获取最终参数。
    这种方法有一个好处:
    1、跨应用服务器,比你单纯改服务器代码好;-----------------------------
    类似代码:
    package com.ASSys.filter;import javax.servlet.Filter;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import java.io.IOException;import com.ASSys.ca.CADelegater;
    import javax.servlet.http.HttpServletRequest;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2005</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class FileFilter
        implements Filter {
      public void init(FilterConfig config) throws javax.servlet.ServletException {
      }  public void doFilter(ServletRequest request, ServletResponse response,
                           FilterChain chain) throws java.io.IOException,
          javax.servlet.ServletException {
        HttpServletRequest hrequest = (HttpServletRequest) request;
        String uri = hrequest.getServletPath();
        System.out.println(uri + "|" + uri.substring(uri.lastIndexOf("/") + 1));
        //重定向到文件下载界面
        if (uri.startsWith("/filedownload/")) {
          //按照UNID方式进行设置
          hrequest.getRequestDispatcher("/AS_SYSTEM/filedownload.jsp?UNID=" +
                                        uri.substring(uri.lastIndexOf("/") + 1)).
              forward(request, response);
        }else if (uri.startsWith("/projectdownload/")) {
          //按照项目参数方式进行设置
          int i=uri.lastIndexOf("/") ;
          String strTaskCode=uri.substring(i+1);
          String strProjectId=uri.substring(17,i);
          hrequest.getRequestDispatcher("/AS_SYSTEM/filedownload.jsp?Projectid="
                                        +strProjectId+"&Taskid=" + strTaskCode).
              forward(request, response);
        }
      }  public void destroy() {
      }
    }
    ----------------
    WEB.XML的配置
    <filter>
        <filter-name>FileFilter</filter-name>
        <filter-class>com.ASSys.filter.FileFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>FileFilter</filter-name>
        <url-pattern>/filedownload/*</url-pattern>
      </filter-mapping>
    ---------------------------
    实际情况
    http://host/filedownload/123123123
    就类似于
    http://host/filedownload?123123123
      

  3.   

    楼上所说的其实就是传说中的URL重写大法