首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >介绍Spring

介绍Spring
EN

Stack Overflow用户
提问于 2009-08-14 17:58:06
回答 3查看 2K关注 0票数 0

我想将Spring介绍给一个应用程序,该应用程序到目前为止使用了对www.example.com/login.jsp文件的简单直接访问,它包含业务逻辑和表示细节。

我想去掉业务逻辑,只将表示保留在JSP中。为此,我将jsp文件从webapp/login.jsp移动到webapp/WEB-INF/jsp/login.jsp,然后将带有模式*.jsp的所有urls映射到Spring的DispatchServlet,后者转到Controller,然后将视图(应该)转发到/WEB-INF/jsp/login.jsp

web.xml看起来如下所示:

代码语言:javascript
复制
<servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

springapp-context.xml

代码语言:javascript
复制
<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <value>
            /*.jsp=urlFilenameViewController
        </value>
    </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"></property>
</bean>

但是,这方面的基本问题是,我正在将以.jsp结尾的外部URL请求映射到也映射到.jsp的内部web请求。然后,内部.jsp请求第二次通过DispatchServlet,返回一个错误,因为它找不到处理请求的任何东西:

代码语言:javascript
复制
WARN - DispatcherServlet.noHandlerFound(1077) | No mapping found for HTTP request with URI [/myapp/WEB-INF/jsp/login.jsp] in DispatcherServlet with name 'springapp'

考虑到我不能更改外部URL,那么在将外部文件类型映射到相同的内部文件类型时,有什么方法可以解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2009-08-14 19:18:05

我们在应用程序中通过使用不同的请求URL模式(*.htm而不是*.jsp)来解决这个问题。这避免了这个问题,而且这是一个很好的实践,因为在URL和JSP之间可能没有1到1的关系。

票数 2
EN

Stack Overflow用户

发布于 2009-08-17 07:54:00

我建议你:

  • 将Spring请求映射到不同的模式(例如*.do);
  • 使用UrlRewriteFilter或应用服务器的url重写功能将*.jsp调用映射到*.do
票数 0
EN

Stack Overflow用户

发布于 2012-03-31 03:27:43

我不知道如何告诉Spring忽略它对JSP文件的内部请求,但是拦截其他JSP请求。为什么你不保留你的旧的jsps,但让他们前进到一个控制器。例如"page.jsp":

代码语言:javascript
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:redirect url="/page.htm" />

这样,您可以保持您的旧URL不变,但唯一的功能是重定向到控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1279264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档