spring MVC 노트(둘) - SimpleUrlHandlerMapping
23333 단어 springMVC
첫 번째:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
공식api 문서는 다음과 같습니다.
Implementation of the
org.springframework.web.servlet.HandlerMapping
interface to map from URLs to request handler beans. 간단히 말하면HandlerMapping 인터페이스를 실현하고 URL에서 bean까지의 비주얼을 처리한다. 예를 들어 다음과 같은 비주얼을 처리한다.
/welcome.html=ticketController
/show.html=ticketController
하나의 URL은 하나의 bean에 대응하지만, 이 bean은 Controller 인터페이스를 실현하는 요구가 있습니다. 다음은 실례를 보겠습니다.
1. Controller는 다음과 같습니다.
1 package com.springmvc.demo.controller;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.springframework.stereotype.Controller;
7 import org.springframework.web.servlet.ModelAndView;
8 import org.springframework.web.servlet.mvc.AbstractController;
9
10 @Controller
11 public class SimpleController extends AbstractController {
12
13 @Override
14 protected ModelAndView handleRequestInternal(HttpServletRequest request,
15 HttpServletResponse response) throws Exception {
16 System.out.println("SimpleController...");
17 System.out.println(request.getParameter("username"));
18 ModelAndView mv = new ModelAndView("simpleController");
19 mv.addObject("msg", "hello,SimpleController");
20 return mv;
21 }
22
23 }
2. 비교를 위해 Controller를 다시 만듭니다. 이것은 Controller 인터페이스를 실현하지 않고 주석을 사용합니다.
1 package com.springmvc.demo.controller;
2
3 import javax.servlet.http.HttpSession;
4
5 import org.springframework.stereotype.Controller;
6 import org.springframework.ui.ModelMap;
7 import org.springframework.validation.BindingResult;
8 import org.springframework.web.bind.annotation.ModelAttribute;
9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.servlet.ModelAndView;
12
13 import com.springmvc.demo.model.User;
14
15 @Controller
16 @RequestMapping("/user")
17 public class UserController {
18
19 @RequestMapping("/add")
20 public ModelAndView addUser(@RequestParam String username,
21 @RequestParam String password,
22 @RequestParam int id,
23 HttpSession session){
24
25 ModelAndView mv = new ModelAndView();
26 mv.setViewName("hello");
27 User u = new User();
28 u.setUsername(username);
29 u.setPassword(password);
30 u.setId(id);
31 mv.addObject("user", u);
32 session.setAttribute("user", u);
33
34 return mv;
35 }
36
37 /*@ModelAttribute
38 public User getUser(){
39 User u = new User();
40 u.setId(12);
41 return u;
42 }*/
43
44 @RequestMapping("/preAddUser")
45 public String preAddUser(ModelMap map){
46 User u = new User();
47 map.addAttribute("user", u);
48 return "index";
49 }
50
51 @RequestMapping("/addUser")
52 public String addUser2(@ModelAttribute("user") User user,BindingResult result,ModelMap map){
53 if(user.getUsername().equals("yang")){
54 map.addAttribute("user", user);
55 return "index";
56 }
57 /*ModelAndView mv = new ModelAndView();
58
59 mv.setViewName("hello");
60 mv.addObject("user", user);*/
61
62 return "hello";
63 }
64
65 }
3. 페이지 단순 Controller.jsp:
1 <!DOCTYPE html>
2 <html>
3 <body>
4
5 <form action="/springmvc/simpleController" method="post">
6 <input type="text" name="username"/>
7 <input type="text" name="password"/>
8 <!-- <input type="text" name="id"/> -->
9 <input type="submit" value="submit" />
10 </form>
11 </body>
12 </html>
4. MVC 구성 파일:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
4 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
5 xsi:schemaLocation="
6 http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/context
9 http://www.springframework.org/schema/context/spring-context.xsd
10 http://www.springframework.org/schema/mvc
11 http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12
13 <context:component-scan base-package="com.springmvc.demo.controller" />
14
15 <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
16 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->
17 <!-- <mvc:default-servlet-handler/> -->
18 <!-- <mvc:annotation-driven /> -->
19 <!-- <mvc:resources location="/resource/images/" mapping="/images/**" /> -->
20 <bean id="simpleController" class="com.springmvc.demo.controller.SimpleController"></bean>
21
22 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
23
24 <property name="urlMap">
25 <map>
26 <entry key="/simpleController" value-ref="simpleController" />
27 </map>
28 </property>
29 </bean>
30
31 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
32 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
33 <property name="prefix" value="/" />
34 <property name="suffix" value=".jsp" />
35 </bean>
36
37
38 </beans>
테스트 1:
단순 Controller에 액세스합니다.jsp, 제출을 클릭하여 정상 방문
테스트 2:
액세스/user/add, 404 표시
요약:
SimpleUrlHandlerMapping은 Controller 인터페이스를 실현한 bean만 지원하고 그 속성에서 url 경로 -->bean을 비추어야 하며 @RequestMapping 주석은 지원하지 않기 때문에 이 SimpleUrlHandlerMapping 기능은 한계가 있습니다
참고: mappings 속성을 사용하여 구성할 수도 있습니다. 효과는 동일합니다.
<!-- mappings Properties -->
<property name="mappings">
<props>
<prop key="/simpleController">simpleController</prop>
</props>
</property>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Spring MVC] [1] 5. 스프링 MVC - 구조 이해핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회 핸들러 어댑터 실행: 핸들러 어댑터를 실행 핸들러 매핑 org.sp...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.