>  기사  >  Java  >  SpringMVC 기본 구성에 대한 자세한 소개

SpringMVC 기본 구성에 대한 자세한 소개

不言
不言앞으로
2018-09-30 16:04:532201검색

이 글은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제