gpt4 book ai didi

java - Spring MVC 和 JSP。基本步骤

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

我从 Spring MVC 开始,但是出了点问题,因为我收到 404 错误,并显示消息“请求的资源不可用”。搜索了几个小时并尝试了不同的事情并没有帮助,所以我决定向你们寻求帮助。

我有一个index.jsp,我想在其中有一个链接,该链接将调用我的 Controller 中的方法并返回hello.jsp。

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<a href="${"test"}">Click to press hello</a>
</body>
</html>

通过单击此链接,我认为我应该进入我的 MessageController:

package main.java.service;

//imports...

@Controller
@RequestMapping(value = "/test")
public class MessageController {

@RequestMapping(method = RequestMethod.GET)
public String getThis(Map<String, String> map) {
map.put("message", "Hello World!");
return "hello";
}
}

根据我的理解,应该会发生这种情况,因为我标记了 Controller 的包包含在 servlet-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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<mvc:annotation-driven />
<context:component-scan base-package="main.java.service"/>

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

最后还有一个 web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

<display-name>SpringWebConfiguration</display-name>

<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-config.xml</param-value>
</context-param>
</web-app>

所以,据此我应该得到一个 hello.jsp 文件,其中包含消息 Hello World!但我收到了 404 错误,并显示消息“请求的资源不可用”。如果有人能在这里发现问题那就太好了。

这是我的 hello.jsp

<%@ page language="java" contentType="text/html; charset=US-ASCII" pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Title</title>
</head>
<body>Here there is a message: ${message}</body>
</html>

这是工作仓库:https://github.com/vladt89/fsboard

最佳答案

更改您的web.xml作为

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

<display-name>SpringWebConfiguration</display-name>

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

或者你可以忽略<init-param>作者:

重命名您的 servlet-config.xmlspring-dispatcher-servlet.xml
<init-param>不存在Name of the Spring configuration file应与 servlet-name 相同用于web.xml有尾部-servlet .

而且您绝对需要输入 hello.jsp里面WEB-INF您在 View 解析器中定义的文件夹

<property name="prefix" value="/WEB-INF/"/>

所以它会寻找jsp WEB-INF 内的文件文件夹

<小时/>

更新:我已经派生了您的代码并在我的环境中进行了测试。

导致此问题的代码您没有在问题中发布......太糟糕了。
添加@Component在你的 MessageService 中和MessageServiceImpl

@Component
public interface MessageService {

void createMessage(String message);

Collection<String> fetchAllMessages();
}

@Component
public class MessageServiceImpl implements MessageService {
private Collection<String> messageLibrary = new LinkedList<>();

@Override
public void createMessage(String message) {
messageLibrary.add(message);
}

@Override
public Collection<String> fetchAllMessages() {
return messageLibrary;
}
}

关于java - Spring MVC 和 JSP。基本步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501326/

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