SpringMvc(一.环境搭建)(二.数据校验、)

来源:互联网 发布:windows xp vol key 编辑:程序博客网 时间:2024/06/02 01:32


一、1.环境搭建
1. 添加依賴

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
</dependency>

2. 在web.xml中配製 SpringMvc框架定義好的Servlet
 <servlet>
      <servlet-name>springMvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
      <servlet-name>springMvc</servlet-name>
      <!--
          默認的Servlet
          當請求發送給Servlet容器之後,如果沒有相匹配的Servlet來處理請求,
          則由這個默認的Servlet來處理
       -->
      <url-pattern>/</url-pattern
      
      
2.1  DispatcherServlet的作用
    負責啟動SpringIoC容器,Spring容器中定義了大量的javaBean對象,而且对象之间的
    依赖关系由Spring容器来维护
    
    当请求到来时,DispatcherServlet 根据当亲的请求路径,到Spring 容器中查找能够处理当前
    请求的自己定义的Controller类的对象
    
    
3. 编写一个Controller类

@Controller  //是为了让Spring容器扫描到,并加入到容器中进行实例化
public class HelloController {
    @RequestMapping("/hello")
    public String hello(Model model) {    //Model相当于 JavaWeb中的范围
        model.addAttribute("msg", "hello spring mvc!!!!");
        return "hello";  
        //视图的名称  ---> /WEB-INF/views/hello.jsp
        
        //return后面的 值是 视图的逻辑名,完整的视图文件名  前缀+逻辑名+后缀
        //前缀= /WEB-INF/views
        //后缀= .jsp
        
    }
}

4. 在 src/main/resources目录中编写 spring的配制文件: spring-mvc.xml

    <!-- 打开annotation 配置和 自动扫描 -->
    <context:annotation-config />
    <context:component-scan base-package="cn.itlaobing.web.controller" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    
5. 修改web.xml 让DispatcherServlet在启动的时候,加载指定的配制文件

<servlet>
      <servlet-name>springMvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 通过初始化参数配制 spring配置文件的位置 -->
      <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-mvc.xml</param-value>
      </init-param>
      
      <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
      <servlet-name>springMvc</servlet-name>
      <!--
          默認的Servlet
          當請求發送給Servlet容器之後,如果沒有相匹配的Servlet來處理請求,
          則由這個默認的Servlet來處理
       -->
      <url-pattern>/</url-pattern>
      
      
  </servlet-mapping>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、Spring 框架中的数据校验

        1. 引入数据校验的依赖jar包:

                <dependency>
                       <groupId>org.hibernate</groupId>
                       <artifactId>hibernate-validator</artifactId>
                       <version>5.4.1.Final</version>
                 </dependency>

         2. 在实体类上添加annotation约束
                 org.hibernate.validator.constraints 包中定义了这些annotaion
                 参考:http://blog.csdn.net/u011851478/article/details/51842157
                 如:
                 @NotBlank(message="姓名不能为空")  //当姓名为空时,不能实时提交
         3. 在Controller的处理器方法上添加annotation
                  3.1 @Validated Spring框架在调用处理器方法之前会对javaBean进行验证,不管验证通过还是没有通过,都会调用处      理器方法
                  3.2 为处理器方法添加参数  BindingResult bindingResult,这个参数中保存了验证的结果
    
           4. 在处理器方法中判断验证没有通过的逻辑
                  if(bindingResult.hasErrors()) {
                            model.addAttribute("student", student);
                            return "student/create";
                  }

          5. 在视图页面中显示错误消息
          <s:errors path="name" />
    ----------------------------------------------------------------------------------------------------------------

    @ModelAttribute 的应用

                 ①修饰方法:当请求到来的时候,处理器方法还没开始执行的时候,首先执行@ModelAttribute修饰的方法,然后再执行处理器方法,

                ②修饰方法的属性 , 当框架调用处理器方法的时候,首先到Model中查找,如果没有找到,则创建一个实例,如果找到了,就使用它,然后再进行参数绑定,

 

      在进行异步处理的时候只需要在 处理器方法上添加@ResponseBody

    

    SpringMVC中提交的请求路径中可以携带参数,这种风格称为restful 的路径风格

定义的时候,在 @GetMapping或者 @RequestMapping 或者 @PostMapping中使用 {变量}


比如: /students/{id} 提交数据

在 处理器方法中,使用 @@PathVariable("路径变量名") 来获取变量值,如果”路径变量名"省略,
则使用 参数的名称

@GetMapping("/{id}/update")
    public String update(@PathVariable Long id) {    
        
        return "";

-------------------------------------------------------------------------------------------------------------------------------------------------

因为在web.xml文件中配制的Servlet是默认的Servlet,
静态资源如: js,css,图片 这个文件的请求将会被 这个Servlet拦截
,系统中没有处理这些请求的 Controller就会导致这些资源不能被浏览器加载,出现404错误。

假设 静态资源存放的目录是 src/main/webapp/assets
此时需要在 Spring的配制文件中配制:

location表示静态资源的存放的目录 “/”表示应用程序的根目录
mapping表示静态资源的请求,  /**表示子目录,会匹配 /assets/lib/xxxxx/xxxxxx.js
                      如果是 一个* ,则表示一个目录, ** 表示多级目录

<mvc:resources location="/assets/" mapping="/assets/**">
</mvc:resources>
-------------------------------------------------------------------------------------------------------------------------------------------------------

当请求到达处理器方法的时候,SpringMVC会检测处理器方法的参数,如果这个参数是一个自定义的实体类,
此时框架就会 实例化这个类,然后从请求参数中获取数据,将数据set到实体类中,此时需要注意的是:
请求参数的 名称必须与 实体类中的field 名称一致



SpringMVC中的重定向,只需要返回字符串 "redirect:xxxxx",xxxx是地址

-------------------------------------------------------------------------------------------------------------------------------------------------------

它能够修饰: 方法和方法的参数

1. 修饰方法
    只要有请求到来的时候,处理器方法还没有开始执行的时候,首先执行@ModelAttribute修饰的方法,然后才执行处理器方法
    
2. 修饰方法的参数
    当框架调用处理器方法的时候,首先到Model中查找,
    如果没找到,则创建一个实例,如果找到了,就使用它,然后再进行参数绑定,如果有验证则进行验证      

   




阅读全文
0 0
原创粉丝点击