gpt4 book ai didi

java - Spring MVC 简介

转载 作者:行者123 更新时间:2023-12-02 08:37:07 25 4
gpt4 key购买 nike

我想将 Spring MVC 引入到一个应用程序中,该应用程序迄今为止使用简单的直接访问 JSP 文件,即包含业务逻辑和表示的 www.example.com/login.jsp详细信息。

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

web.xml 如下所示:

<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

<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,返回错误,因为它找不到任何内容来处理该请求:

WARN - DispatcherServlet.noHandlerFound(1077) | No mapping found for HTTP request with URI [/myapp/WEB-INF/jsp/login.jsp] in DispatcherServlet with name 'springapp'

鉴于我无法更改外部 URL,在将外部文件类型映射到相同的内部文件类型时是否有办法解决此问题?

最佳答案

我们在应用程序中通过使用不同的请求 URL 模式(*.htm 而不是 *.jsp)来解决这个问题。这可以避免这个问题,并且无论如何这都是一个很好的做法,因为 URL 和 JSP 之间可能不存在一对一的关系。

关于java - Spring MVC 简介,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1279264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com