我知道这里有很多代码可以扔掉,但如果有人能帮助我找出问题,我会很感激。它只是一个基本的MVC,主页上只有一个链接,“登录”,点击后它会带你到login.jsp。但是,它没有这样做。我认为问题出在控制器上,因为控制器文件中的注释是浅灰色的(使用intellij idea),好像它们没有被使用一样。 “/ login”确实显示在网址中。
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
spring-servlet.xml(config):
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="com.nusuth.controllers"></context:component-scan>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
loginController.java:
package com.nusuth.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class loginController {
@RequestMapping(value="/login" , method=RequestMethod.GET)
public ModelAndView loadLoginPage() {
ModelAndView mav = new ModelAndView("login");
return mav;
}
}
答案 0 :(得分:0)
我想你也可以写&#34;登录&#34;控制器:
@Controller
public class loginController {
@RequestMapping(value="/login" , method=RequestMethod.GET)
public String loadLoginPage(Model model) {
model.addAttribute(new LoginForm()); // empty login form
return "login"; //jsp page name
}
}
答案 1 :(得分:0)
@ Muninn9, 我注意到你的web.xml,它缺少ContextLoaderListener配置,它最终加载并初始化你的bean容器。 将log4j.xml / log4j.properties添加到web.xml并使用此侦听器(Log4jConfigListener)来启用控制台日志。 确保项目类路径设置中有一个有效的log4j.xml / log4j.properties。
答案 2 :(得分:0)
从您的日志消息中我可以看到catalina没有找到所需的类SpringServlet。
这意味着Web项目不包含所需的库。 Web应用程序的所有必需库都应位于WEB-INF / lib目录中。
如果您使用MAVEN或gradle等构建工具,它们将自动处理它。
否则你可以
- 创建文件夹WEB-INF / libs
- 将所有必需的库放在那里。
醇>
IntelliJ idea在您的主目录中创建一个名为 libs 的目录,如果选择自动下载库的选项,则将所有库放在那里。您可以将该目录复制到 WEB-INF
答案 3 :(得分:0)
将架构配置修复为:
xsi:schemaLocation="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-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
否则<mvc:annotation-driven />
将无法正确注册。
我在这里为你修好了一切:
弹簧servlet.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"
xsi:schemaLocation="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-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="com.nusuth.controllers"></context:component-scan>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
的login.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login Page</title>
</head>
<body>
<h1>Hello This is login page!</h1>
</body>
</html>
loginController.java
package com.nusuth.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class loginController {
@RequestMapping(value="/login" , method=RequestMethod.GET)
public ModelAndView loadLoginPage() {
ModelAndView mav = new ModelAndView("login");
return mav;
}
}
现在请求 login.jsp :