SpringMVC上

SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC框架.

MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化、等等),而且使用简单,与Spring无缝集成。 支持 RESTful风格的 URL 请求 。

采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

SpringMVC流程:

01、用户发送出请求到前端控制器DispatcherServlet。

02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。

03、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。

04、DispatcherServlet调用HandlerAdapter(处理器适配器)。

05、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。

06、Controller执行完成返回ModelAndView对象。

07、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

08、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。

09、ViewReslover解析后返回具体View(视图)。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。

1.1.  @RequestMapping

@RequestMapping注解主要是设置SpringMVC请求的映射路径

所谓的映射路径,就是匹配请求路径和执行方法关系的路径.

请求路径:http://localhost:8080/springmvc/method1.do

映射路径:@RequestMapping(value="/method1")

@RequestMapping 用于贴在控制器的类上或者方法上面

如果是贴在控制器的类上面,那么在访问这个类的方法之前必须先加上类上的对应的名称

类似于 项目下面的 模块名称

如果贴在方法上面,就是访问此方法的资源名称

@Controller
@RequestMapping("/request")  //访问时候必须加上,类似模块名称
public class RequestController {
    @RequestMapping(value="/method1") //资源名称 
    public void method1() {
    }
}

1.1.1.  方法限制

就是设置请求的method类型.如果发送过来的请求与方法设置的method不一样,就不能访问执行方法.

请求method : GET , POST

  <form action="${pageContext.request.contextPath }/login.do" method="get">
    <input type="submit" value="登录">
  </form>

    /**
     * 接收的请求,必须是POST
     * @return
     */
    @RequestMapping(value="login",method=RequestMethod.POST)
    public String login(){
        System.out.println("-登录-");
        return "/login.jsp";
    }

1.1.1.  参数限制

1.就是请求里面必须包括哪些参数,或不包括哪些哪些.

2.参数包括哪些值,不包括哪些值

限制参数格式:

1.参数必须包括:params={"username","password"}

2.参数不能包括:params={"!userid"}

3参数值必须是指定的值:params={"username=zhangsan"})

4.参数值必须不是指定的值:params={"userid!=123"})

请求:没有后台方法指定的参数'

<h4>登录页面</h4>
<form action="${pageContext.request.contextPath}/request/method1.do" method="post">
    账号:<input name="username"><br>
    密码:<input type="password" name="pwd"><br>
    <button type="submit">登录</button>
</form>

后台代码
    /**
     * 需求:登录时必须包括用户名,密码
     * @return
     */
    @RequestMapping(value="login2",params={"username","password"})
    public String login2(){
        System.out.println("-登录-");
        return "/login.jsp";
    }

SpringMVC的方法默认可以注入 JavaWeb开发常用的数据共享对象

HttpServletRequest

HttpServletResponse

HttpSession

获取这些共享对象以后,就可以向之前的Servlet一样,做任何数据共享以及页面跳转操作'

/*
 * Spring的方法默认可以注入 JavaWeb开发常用的数据共享对象 
HttpServletRequest
HttpServletResponse
 * HttpSession 以后开发 按需注入
 */
@RequestMapping(value = "/method0")
public void method0(HttpServletRequest req, 
                    HttpServletResponse resp,
                    HttpSession session) {
    //TODO
}
原文地址:https://www.cnblogs.com/dedema/p/11172823.html