gpt4 book ai didi

java - Spring MVC - 不加载 View

转载 作者:行者123 更新时间:2023-11-28 22:35:24 25 4
gpt4 key购买 nike

我一直在尝试将 Java Servlet 用于 Web 应用程序,在此应用程序中,我能够点击一个 Servlet 并正确加载一个 .jsp 页面,完成此操作后,我转向了 Spring MVC。我遇到了调用我的 servlet Controller 类的问题,但它不会加载 View 。

我已经排除了资源不可见的可能性,因为它可以与普通的 Java servlet 一起正常工作。我还阅读了几乎所有资源/教程,试图在没有任何运气的情况下找出问题,我的问题仍然存在。此外,为了解决问题,我添加了一个错误页面标记 (),以查看当我尝试访问我的页面时,它是否会正确地重定向我,但它无法找到为 404 错误指定的页面。

谁能指出我错过了什么?

Web.xml

变体:更改了 url-pattern、init-params、上下文配置位置等

<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/LoginServlet-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

LoginServlet-servlet.xml

变化:我已经尝试将声明移动到其他帖子中建议的不同位置,但没有结果。此外,通常我将前缀设置为/WEB-INF/jsp/

<context:component-scan base-package="plan.route.server" />

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

<context:annotation-config/>
<mvc:annotation-driven />

LoginServlet.java

变体:不同的 requestMapping 路径,标记方法而不是类,从方法返回字符串,返回 ModelAndView 类

package plan.route.server;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller()
@RequestMapping("/")
public class LoginServlet extends org.springframework.web.servlet.mvc.AbstractController {

@RequestMapping(method = RequestMethod.GET)
public String forwardTo() {
return "index";
}

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
return new ModelAndView("login", "login", "login");
}

}

项目设置

变体:servlet xml、.jsp 文件等的不同位置

Project Setup

谁能看到我错过了什么?尽管有所有变化,我要做的就是加载一个 .jsp 页面。

编辑:调用我的java servlet方法后显示如下错误:

WARNING: No mapping found for HTTP request with URI [/Root/Login] in DispatcherServlet with name 'LoginServlet'

最佳答案

我看到一件事是错误的,它是 LoginServlet-servlet.xml 中的 jsp 配置,尝试如下更改前缀值:

<context:component-scan base-package="plan.route.server" />

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

<context:annotation-config/>
<mvc:annotation-driven />

使用您的配置,Spring 无法找到 jsp 文件,因为您指定了错误的路径。您必须特定于文件夹,在您的情况下,您在 /WEB-INF/jsp 文件夹中有 jsp 文件。

编辑:

我在我的工作区中配置了您的项目并且它可以运行。尝试从 web.xml 中删除以下行:

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/LoginServlet-servlet.xml</param-value>
</init-param>

你的 Controller 类应该是这样的:

@Controller
@RequestMapping("/")
public class LoginServlet{

@RequestMapping(method = RequestMethod.GET)
public ModelAndView forwardTo(ModelMap model) {
return new ModelAndView("login", "login", "login");
}
}

并注意如何调用 Controller :

http://localhost:8080/Root/

这是调用 Controller 的正确方法,因为您将项目命名为 Root 并且 Controller 正在监听 "/" 路径。我使用端口 8080 是因为您用 tomcat 标记了问题,这是默认的 tomcat 端口,如果您使用另一个端口,请将其更改为您使用的端口。

关于java - Spring MVC - 不加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44822534/

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