2011-01-06 69 views
1

我使用的中間了: Spring MVC的3.0, 阿帕奇瓷磚2.1.2, 的Apache Tomcat 6.0.29, 道場1.5JSESSIONID顯示URL

我的瀏覽器訪問Tomcat中的第二次,網址被它的中間潑了一個jsessionid。

例如

第一個請求:http://localhost:8081/accessmenus/menus/main

第二個請求:http://localhost:8081/;jsessionid=45A05E88DD78A06B1C99C3C02D45D65Caccessmenus/menus/main

(所有後續請求沒有JSESSIONID)

任何想法?

web.xml中:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
     version="2.4"> 

    <!-- The master configuration file for this Spring web application --> 
    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/config/web-application-config.xml</param-value> 
    </context-param> 

    <!-- Enables use of HTTP methods PUT and DELETE --> 
    <filter> 
    <filter-name>httpMethodFilter</filter-name> 
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>httpMethodFilter</filter-name> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    </filter-mapping> 

    <!-- Loads the Spring web application context --> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- The front controller of this Spring Web application, responsible for handling all application requests --> 
    <servlet> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <!-- Map all *.spring requests to the DispatcherServlet for handling --> 
    <servlet-mapping> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

webmvc-config.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <!-- Enables controllers mapped with @RequestMapping annotations, formatting annotations @NumberFormat @DateTimeFormat, and JSR 303 style validation --> 
    <mvc:annotation-driven/> 

    <mvc:resources mapping="/resources/**" location="/, classpath:/META-INF/web-resources/" /> 
    <mvc:default-servlet-handler /> 

    <!-- Map paths directly to view names without controller processing. Use the view-name attribute if necessary: by convention the view name equals the path without the leading slash --> 
    <mvc:view-controller path="/" view-name="mmg" /> 

    <!-- Resolves logical view names returned by Controllers to Tiles; a view name to resolve is treated as the name of a tiles definition --> 
    <bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> 
    </bean> 

    <!-- Configures the Tiles layout system --> 
    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/**/views.xml</value> 
      </list> 
     </property> 
    </bean> 

</beans> 

的Tomcat的server.xml:

<?xml version='1.0' encoding='utf-8'?> 
<Server port="8005" shutdown="SHUTDOWN"> 

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
    <Listener className="org.apache.catalina.core.JasperListener" /> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 

    <GlobalNamingResources> 
    <Resource name="UserDatabase" auth="Container" 
       type="org.apache.catalina.UserDatabase" 
       description="User database that can be updated and saved" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 
    </GlobalNamingResources> 

    <Service name="Catalina"> 

    <Connector port="8081" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" 
       compression="on" 
       compressableMimeTypes="text/html,text/xml,text/plain,text/javascript,text/css" 
       compressionMinSize="1024" /> 

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

    <Engine name="Catalina" defaultHost="localhost"> 

     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
      resourceName="UserDatabase"/> 

     <Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="false" 
      xmlValidation="false" xmlNamespaceAware="false"> 

     <Context docBase="ROOT" path=""/> 

     </Host> 
    </Engine> 
    </Service> 
</Server> 
+0

這發生在登錄前後。 – 2011-01-07 00:47:28

回答

3

它TU這是由於我在其中一個JSP中偶然發生的雙重urlencoding造成的。從本質上講,我這樣做:

<spring:url var="rootPath" value="/root/path" /> 
<spring:url var="fullPath" value="${rootPath}/rest/of/path" /> 

我不應該用彈簧:URL,因爲它urlencodes它來創建最初的「ROOTPATH」變量。這是要做到這一點的方式:

<c:set var="rootPath" value="/root/path" scope="page" /> 
<spring:url var="fullPath" value="${rootPath}/rest/of/path" /> 

感謝那些花時間閱讀我的問題! :^)