SpringMVC_day_1

SpringMVC环境构建


    
      org.springframework
      spring-context
      5.0.2.RELEASE
    
    
      org.springframework
      spring-web
      5.0.2.RELEASE
    
    
      org.springframework
      spring-webmvc
      5.0.2.RELEASE
    
    
      javax.servlet
      servlet-api
      2.5
      provided
    
    
      javax.servlet.jsp
      jsp-api
      2.0
      provided
    
      
          junit
          junit
          4.12
      
  

如果使用maven自带的tomcat,加入

 
    ROOT
    
    
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        

          1.7
          1.7
          utf-8
        
      
      
      
        org.apache.tomcat.maven
        
        tomcat7-maven-plugin
        2.1
        
          
          80
          
          /mvc
        
      

    
  
SpringMVC_day_1_第1张图片
springmvc执行流程原理.jpg

图中的前端控制器在webapp中声明,视图解析器在springMvc.xml文件中声明

web.xml



    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
        contextConfigLocation
        classpath:springmvc.xml
    
    1

    
        dispatcherServlet
        /
    


Springmvc.xml



    

    
        
        
    

    
        
            
                
            
        
    

    

@RequestMapping通过其path属性即value属性设置匹配路径,用过params属性和method属性限制请求参数和限制请求方式

params = {"accountName"},表示请求参数必须有 accountName
params = {"moeny!100"},表示请求参数中 money 不能是 100。

请求乱码问题:

post


        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        characterEncodingFilter
        /*
    
    


get(get乱码针对tomcat8以下的把呢不能)

tomacat 对 GET 和 POST 请求处理方式是不同的,GET 请求的编码问题,要改 tomcat 的 server.xm配置文件,如下:改为:如果遇到 ajax 请求仍然乱码,请把:useBodyEncodingForURI="true"改为 URIEncoding="UTF-8"

自定义Converter(类型转换问题,以Date格式化为例)

实现继承Converter接口的实现类

public class StringToDateConverter implements Converter{
    ...
}

在Spring的配置文件中配置类型转换器,声明之后记得在标签中声明



     
     
         
    
         
         
    

第三步:在 annotation-driven 标签中引用配置的类型转换服务 

可将ServletAPI对象作为方法参数,直接进行使用

SpringMVC 还支持使用原始 ServletAPI 对象作为控制器方法的参数。支持原始 ServletAPI 对象有:
HttpServletRequest 
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream 
OutputStream 
Reader 
Writer
我们可以把上述对象,直接写在控制的方法参数中使用

常用注解

@RequestParam  属性:name等同于value required属性表示该参数是否必须,默认为true,表示请求参数没有该参数时抛出异常,为false,请求参数没有该参数时,赋值为null

@RequestBody() 属性: required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false,get 请求得到是 nul

@PathVariable() 属性:value:用于指定 url 中占位符名称。required:是否必须提供占位

@RequestHeader() 属性:value:提供消息头名称required:是否必须有此请求头

@CookieValue() 属性:value:指定 cookie 的名称。required:是否必须有此 cook

@ModelAttribute() 属性:value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key,分别对象方法返回值为引用类型和void

@SessionAttributes() 只能作用在类上,结合Model使用,属性:value:用于指定存入的属性名称type:用于指定存入的数据,
@SessionAttributes(value ={"username","password"},types={Integer.class}) 

你可能感兴趣的:(SpringMVC_day_1)