springMVC

来源:互联网 发布:淘宝联盟高佣活动报名 编辑:程序博客网 时间:2024/06/05 20:52

一、什么是springMVC?
属于spring的一个web框架,通过一套mvc注解使pojo成为处理请求的控制器而不用实现任何接口。

二、处理请求的流程:
1. 用户发送请求;
2. 前端控制器DispactherServlet拦截相应的(和web.xml中配置的信息匹配)请求,根据请求信息决定选择哪个处理器controller处理该请求并将请求委托给它;
3. controller调用业务逻辑处理请求,返ModelAndView;
4. DispactherServlet查询视图解析器viewResolver,找到指定的视图显示给用户。
DispactherServlet是springMVC的核心,它在web.xml中配置,配置信息如下:

<servlet>      <servlet-name>dispacther</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <!--表示容器启动时初始化该servlet-->    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>      <servlet-name>dispacther</servlet-name>      <!--用户发出请求时,拦截以.do结尾的请求-->    <url-pattern>*.do</url-pattern>  </servlet-mapping>

HandlerMapping用于将请求映射到处理器,在spring中的配置如下:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 

BeanNameUrlHandlerMapping是将请求和bean映射,即如果url为
上下文/hello,则在spring的配置文件中要有一个/hello的bean。

三、请求地址映射和请求数据绑定
1.请求地址映射@RequestMapping
可以打在类和方法上,打在类上时表示该类中的所有响应请求的方法都是以这个地址作为父路径的。
属性:
value:指定请求的实际地址。
method:请求的方法类型,包括put、get、post、delete
consumes:请求的提交内容类型,如application/json, text/html。
produces:请求的返回类型
params:请求中只有包含规定的参数值时才能进入该方法中。
headers:请求中必须包含指定的header值。

2.请求数据绑定
@PathVariable 绑定url中的变量(占位符)
将url中的占位符转化为请求方法中的参数

@RequestMapping(value={"/users/{userId}"})public String simpleUrlMapping1(@PathVariable("userId")          String userId){        System.out.println(userId);        return "r2";    }

@RequestParam 获取请求携带的参数的值
属性:
value:url中携带的参数的名称
required:是否必需,默认为true,即表示请求中必须携带该参数,如果没有则会抛出异常。

@RequestMapping(value = "/login")    public String param2(            @RequestParam(value = "username", required = false) String username1,            @RequestParam("password") String password) {        System.out.println("页面传过来的参数是:" + username1 + "," + password);        return "success";    }

@ModelAttribute 这个注解一般会打在请求参数的形参上和非处理的方法上。前者是返回页面的时候将user放到了model模型中,model中的对象相当于放到了request的attribute中;后者一般用于初始化数据,将初始化完成的对象放入model模型中

@SessionAttributes(“user”) 将model中名为user的对象放入会话中

@ResponseBody 将响应报文转为json

0 0
原创粉丝点击