이 글은 SpringMVC의 기본 구성에 대해 자세히 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
오늘은 SpringMVC의 기본 구성에 대해 이야기하겠습니다. 현재 점점 더 많은 주류 프레임워크가 주석을 지원하고 있으며, 우리의 무적 Spring도 주석을 기반으로 한 "제로 구성"을 지원합니다.
XML과 비교한 주석의 장점: Java의 반사 메커니즘을 최대한 활용하여 클래스의 구조적 정보를 얻을 수 있습니다. 이 정보는 구성 작업을 효과적으로 줄일 수 있으며 Java 코드가 하나의 파일에 위치하므로 유지 관리가 더 편리합니다.
참고: 주석은 Spring 2.5 버전 이후에만 사용할 수 있습니다.
Annotation 메소드는 Bean의 정의 정보와 Bean의 구현 클래스를 결합한 것으로 Spring에서 제공하는 Annotation이 포함되어 있습니다.
@Component: 공통 Bean 클래스 선언
@Repository: 지속성 레이어 Dao 클래스 선언
@Service: 비즈니스 레이어 클래스 선언
@Controller: 컨트롤러 클래스 선언
나는 이 4개의 주석을 믿습니다. 이미 잘 알고 있으니 쓸데없는 말을 할 필요도 없습니다. 주석을 사용할 때는 수업 시간에 주석을 스캔하는 것을 잊지 마세요! ! !
@RequestMapping(매우 핵심 주석), 이 주석은 컨트롤러의 요청 URL을 지정하는 데 사용됩니다.
컨트롤러 클래스 정의에서: 예비 매핑 정보를 제공하고 클래스 아래의 모든 요청 메서드에 접두사를 추가합니다.
컨트롤러 클래스의 메서드 정의: 추가 매핑 정보 제공 및 메서드의 요청 경로 제공
DispacherServlet이 요청을 가로챈 후 컨트롤러에서 @RequestMapping이 제공한 매핑 정보에 해당하는 요청을 확인합니다. 행동 양식.
@Controller @RequestMapping("user") public class UserController { @RequestMapping("/hello") public String hello(){ return "hello"; } }
현재 요청 경로는 http://localhost:8080/SpringMvcDemo2/user/hello
@RequestMapping 요청 URL 요청 매핑 외에도 요청 메소드, 요청 매개변수 및 요청을 사용할 수도 있습니다. 헤더 요청, 주석에는 여러 매개변수가 있습니다:
1) 값: 요청의 URL을 나타냅니다.
2) 메소드: 요청 메소드(GET/POST)를 나타냅니다.
3) 매개변수: 요청의 매개변수를 나타냅니다.
4) Heads: 요청 헤더
이들 사이의 관계는 and이며, 여러 요청을 함께 사용하면 요청이 더 정확해질 수 있습니다.
@RequestMapping(value="hello2",method=RequestMethod.POST,params={"username","userpass"},headers="contentType=text/*") public String hello2(){ return "hello"; }
이 코드는 요청된 주소가 hello임을 나타냅니다. 요청 방법은 Post이며 두 개의 매개변수(username 및 userpass)를 전달해야 합니다. 요청 헤더 contentType은 text/로 시작해야 합니다. 동일한 방법으로 두 개의 URL을 작성할 수 있습니다. 하나는 POST이고 다른 하나는 GET이며 설정에 따라 엄격하게 호출됩니다.
@RequestMapping은 Ant 스타일 URL도 지원하며 Ant에서는 3개의 와일드카드를 지원합니다.
? : 캐릭터 구성을 나타냅니다.
*: 모든 문자 일치
**: 다중 레이어 경로 일치
SpringMVC의 매개변수 처리:
@pathVariable: URL 템플릿 메서드
URL에서 자리 표시자를 매핑하는 데 사용됨, 매핑된 변수 name은 자리 표시자의 이름과 일치해야 합니다. 이 경우 요청 주소는 http://localhost:8080/SpringMvcDemo2/user/testPathVariable/Miya가 됩니다. 이 miya는 우리가 기존 URL testPathVariable에서 전달한 매개 변수입니다. username=miya이지만 이는 Baidu를 포함하는 데 도움이 되지 않습니다.
@RequestMapping("/testPathVariable/{username}") public String hello3(@PathVariable("username")String username){ System.out.println("username : " + username); return "hello"; }
@RequestParam: 요청 매개변수를 가져옵니다. 요청 매개변수 이름이 유형 이름과 일치하는 경우 이 주석을 생략해도 값을 계속 받을 수 있습니다.
@RequestMapping("/textParam") public String hello4(@RequestParam("username")String username,@RequestParam("userpass")String userpass){ System.out.println("userpass : " + userpass); return "hello"; }
@RequestHeader: 요청 헤더의 매개변수를 가져옵니다
여기에는 세 가지 매개변수가 있습니다. value: 매개변수의 이름을 지정합니다. 필수: 매개변수가 필요한지 여부를 지정합니다. defualtValue: 기본값을 지정합니다. 매개변수.
@RequestMapping("/testRequestHeader") public String hello5(@RequestHeader("Accept-Language") String language){ System.out.println("language=" + language); return "hello"; }
@CookieValue: 클라이언트 쿠키 정보를 얻는 데 사용됩니다.
@RequestMapping("/testCookieValue") public String hello6(@CookieValue("JSESSIONID")String sessionid){ System.out.println("sessionid=" + sessionid); return "hello"; }
SpringMVC는 ServletAPI를 요청 메소드의 매개변수로 사용할 수 있습니다.
@RequestMapping("/testServletAPI") public String hello7(HttpServletRequest request,HttpServletResponse response,HttpSession session){ //我们可以在这里使用 return "hello"; }
SpringMVC는 모델 데이터를 처리하기 위해 다음과 같은 방법을 제공합니다.
1) ModelAndView: 모델 객체를 통해 모델 데이터를 추가하기 위해 처리 메소드의 반환 유형을 ModelAndView 메소드 본문으로 설정합니다. 뷰와 모델 정보 모두 포함
@RequestMapping("/testModelAndView") public ModelAndView hello8(){ ModelAndView modelAndView = new ModelAndView("hello"); //添加单个值 modelAndView.addObject("h","Hello Spring MVC"); return modelAndView; }
2) 맵 및 형식 매개변수: 형식 매개변수가 Map, Model, ModelMap인 경우 처리 방법이 반환되면 Map에 있는 데이터가 자동으로 모델에 추가됩니다. .
Spring MVC는 내부적으로 모델 인터페이스를 사용하여 데이터를 저장합니다. 메소드를 호출하기 전에 암시적 모델 객체가 데이터 모델의 저장 컨테이너로 생성됩니다. 전달된 매개변수가 Map, Model, ModelMap인 경우 SpringMVC는 이를 자동으로 컨테이너에 저장합니다
@RequestMapping("/testMap") public String hello9(Map<String,Object> map){ map.put("mapdata", "map data"); return "hello"; }
3)@SessionAttributes:将这个模型中的某个属性存储到Session中,以便多个请求之间共享这个属性,只能用来修饰类。在里面的方法如果参数容器中如map里卖弄保存一个与定义的属性名字相同会保存到容器中共享
4)@ModelAttribute:方法形参标记该注解后,形参对象就会放到模型中。
SpringMVC在调用方法之前会逐个调用方法上标注了这个注解的方法。将@ModelAttribute中的属性保存到map中,可在执行表单提交生成对象之前,替换执行方法名相同的参数。
@ModelAttribute public User getUser(){ User user = new User(); System.out.println("调用 getUser 方法"); //默认保存名字为类名首字母小写的user对象到Request中 return user; } @ModelAttribute public void getUserById(Integer id,Map<String,Object> map){ User myuser = new User(); map.put("myuser", myuser); //手动指定user对象的名称,到Request中 System.out.println("调用 getUser 方法"); }
由@SessionAttributs会引发一个很容易轻视的错误当类使用@SessionAttributes修饰,而方法中使用了和SessionAttributes修饰同名的映射参数,确没有添加@ModelAttribute修饰时,则会报错。
위 내용은 SpringMVC 기본 구성에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!