applicationContext.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:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd" > <!-- 定义支持注解的HanlderMapping --> <mvc:annotation-driven/> <!-- 开启组件扫描,启用IOC注解配置 --> <context:component-scan base-package="com.caibai"/> <util:properties id="dbParams" location="classpath:db.properties"> </util:properties> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/"> </property> <property name="suffix" value=".jsp"> </property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
LoginController.java
package com.caibai.controller;
import javax.annotation.Resource;
//import javax.ejb.Remove;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.caibai.search.User;
import com.caibai.search.UserService;
@Controller
public class LoginController {
@Resource
private UserService service;
@RequestMapping("/tologin.form")
public String toLogin(){
return "login";
}
@RequestMapping("/login.form")
public String login(
String username,String number,Model model){
User user = service.checkLogin(username,number);
if(!"".equals(user.getCard())){
model.addAttribute("name", user.getName());
model.addAttribute("card", user.getCard());
model.addAttribute("number", user.getNumber());
model.addAttribute("score", user.getScore());
return "ok";
}else {
model.addAttribute("msg", "会员信息错误!");
return "login";
}
}
}
代码如上,页面访问login.jsp静态页面是可以的,但是填写上登陆数据不能跳转,直接访问login.form也是报404错误,请各位大神看下是什么原因?
怪我咯2017-04-17 17:47:41
설명을 다시 읽어보니 你可以直接访问.jsp页面
이라고 하셨습니다! ! !
그러면 JSP는 루트 경로 바로 아래에 배치되어야 합니다! 그렇다면 prefix
매개변수 또는 value="/"
그리고 WEB-INF
아래에 뷰를 배치하는 이유는 사용자가 컨트롤러를 통하지 않고 뷰에 직접 액세스하는 것을 방지하기 위한 것입니다. 그러면 페이지의 모델 데이터가 존재하지 않게 됩니다. 거기에도 두는 것이 좋습니다.
————————————————————————————————
구성에는 문제가 없는 것 같습니다. .form 메소드에 중단점을 두는 것이 좋습니다.
이제 매핑에 성공했지만 반환된 뷰를 찾을 수 없는 것 같습니다. /WEB-INF/ok.jsp
, /WEB-INF/login.jsp
가 있는지 확인해주세요.
그리고 제가 평소에 보는 뷰들은 바로 /WEB-INF/
아래에 들어가지 않고, 모두 /WEB-INF/views
나 /WEB-INF/jsps
디렉토리 아래에 있습니다.
이렇게 배치했는지 확인하세요. 그렇다면 구성 파일을 잘못 작성한 것입니다.
天蓬老师2017-04-17 17:47:41
404에는 일반적으로 두 가지 이유가 있습니다. 하나는 RequestMapping이 잘못 작성되었거나 찾을 수 없지만 구성이 정확해야 한다는 것입니다. 다른 하나는 ok.html 로그인을 반환한 두 템플릿이 존재하지 않는다는 것입니다. html 또는 ok.jsp ok.html이 존재합니까?
또한 404 페이지에 이유가 있는 메시지가 표시됩니다
高洛峰2017-04-17 17:47:41
@ruixie가 더 정확합니다.
PS: 추가하려면 컨트롤러가 호출할 메서드에 중단점을 넣어 요청이 호출해야 하는 메서드에 들어가는지 확인할 수 있습니다.
입력하지 않으면 일반적으로 구성 매핑 오류입니다.
메서드를 입력하면 반환된 "로그인"이 뷰 파서에서 구문 분석되지 않았음을 증명합니다.
怪我咯2017-04-17 17:47:41
구성 파일을 보면 문제가 없습니다. URL을 찾을 수 없다는 404 오류가 보고되기 때문입니다. 먼저 디버깅을 시도하면 컨트롤러 레이어에 들어갈 수 있을 것 같습니다. 문제는 반드시 전체와 결합되어야 하며, 프로젝트를 통해 판단한 후, [타천사 008]
의 답변을 바탕으로 문제를 확인하시면 됩니다.黄舟2017-04-17 17:47:41
404 찾을 수 없음: 요청한 리소스를 찾을 수 없습니다(요청한 리소스를 찾을 수 없음)
LoginController
@Controller
또는 @ResponseBody
을 함께 사용하지 않고 @RestController
만 사용합니다. 이는 보기 요청 리디렉션 사용을 나타냅니다. "/tologin.form" 및 "/login.form"이 성공적으로 매핑되고 모니터링되는지 여부는 다음 로그와 유사한 애플리케이션 시작 로그에서 확인할 수 있습니다.
구성한 springmvc
서블릿 매핑은 *.form
만 수신하고 *.jsp
에 의해 리디렉션된 요청은 수신하지 않습니다. 이러한 요청은 Tomcat conf/web.xml에 구성된 default
서블릿에 속합니다. jsp
파일은 어디에 있나요?
다음과 같이 수정해 보세요.