1.DispatcherServlet的配置,它是核心控制器
注意事项:1.初始化参数指向当前SpringMvc的配置文件的路径
2.配置当前Servlet映射修改为/
配置application.xml:1.@controller @Service
2.视图解析器:逻辑视图、物理视图
配置Spring文件:必须与web.xml中DispatcherServlet配置化参数保持一致
注意事项:1.自动扫描的包<context:component-scan=""></context:component-scan>
2.配置一个bean:视图解析器将逻辑视图转化为物理视图
IntervalResourceViewResover
配置控制器:1.任何的javabean都可以作为控制器 @Controller
方法可以转化为请求并做出响应
public String hello(){}
方法的返回值:当前业务完毕后,跳转到web资源("逻辑视图的名称")
SpringMVC中Ant的三种风格:
1.?:匹配文件名中任意一个字符 localhost:8080/SpringMvc/s/antStyle
2.*:比配文件名中任意字符localhost:8080/SpringMvc/sss/antStyle
3.**:匹配多层路径localhost:8080/SpringMvc/sss/aaa/antStyle
REST风格:(资源)表现层状态转化
四个操作动词:1.GET获取资源 2.POST新建资源 3.PUT更新资源 4.DELETE删除资源
HiddenHttpMethodFilter:可以过滤我问所有的请求,并将请求方式分为Get、Post、Delete、Put四种
Get-->就是Get请求方式
Post-->查看是否有一个method的请求方式并且是Delete、Put请求它将细分
如果没有它就是Post请求
具体步骤1.<form action="SpringMvc/testDelete/16" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit" value="DELETE">
批注:将类型改为hidden,name必须为_method value=delete或put
2.在web.xml中添加过滤器filter,配置HiddenHttpFilter过滤器
<filter>
<filter-name>HiddenMethodHttpFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenMethodHttpFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.将请求方法改为 RequestMethod.DELETE修改为delete
@RequestMapping(value="/**/testDelete/{id}",method=RequestMethod.DELETE)
@RequestParam I.作用将请求参数与控制器中的方法形参进行绑定
II.使用技巧:1.如果形参与请求参数名字一致可以省略RequestParam的value
2.如果形参与请求参数名字不一致必须使用@RequestParam(value="请求参数")
3.@RequestParam常用属性:value="请求参数的名称"
Require:是否为必须的
@RequestHeader:作用获取报头信息
具体用法:@RequestHeader(value="Accept")
@CookieValue:作用cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。
具体用法:testCookieValue(@CookieValue(value="JSESSIONID") String Id)
使用Servlet API作为入参:HttpServletRequest:testServletAPI(HttpServletRequest request)
HttpServletResponse
HttpSession
InputStream
OutPutStream
Reader
Writer
Out:
Locale
ModelAndView:既包含视图信息也包含模型数据信息
添加数据模型的方法:1.ModelAndView addObject(String atrributeName,Object atrributeValue)
2.ModelAndView addAllObject(Map<String,?> modelMap)
设置视图:1.void setView(View view)
2.void setNameView(String viewName)
在方法的内部,创建ModelAndView
注意:ModelAndView 数据模型的值放置在Request里
Map、Model、ModelMap处理模型数据:
Map.put(String,Object);
Modle.addArtrribute(String,Object);
ModelMap.addAtrribute(String,Object);
@SessionAtrributes(value={""})
I.要求放如的值必须在数据模型里(在Request请求域中是有效的)
II.属性标注:1)通过数据模型中的key值完成session中的数据共享的设置
value里的值是String[]
2.value={"a","b"}
2)可以通过模型数据中的类型,完成共享数据的设置
---------------------------------------------------------
@ModelAtrribute:主要作用是对象合并
I.对象合并具体流程:
1.再调用核心业务前,先从数据库中查出指定数据并封装到User对象中
2.原始User对象的引用,使用方法的入参即可
3.将用户输入的请求参数的值映射到方法作为参数
II. 1.方法:在业务方法执行之前,被调用的方法
I.修饰无返回值的方法
II.修饰有返回值的方法
2.业务方法的入参
III、业务方法的入参,告知方法入参进行与前端控件绑定之前,需要获取相对应的key值
视图解析流程:
1.视图页面的渲染。View视图来做render
2.跳转到目标视图,使用请求转发。
3.遍历视图解析器的集合,将逻辑视图转化为物理视图
SpringMvc当中进行视图解析器的配置
protected View resolverViewName(String viewName,Map<String,Object>
model,locale,locale,HttpRequest request){
for(ViewResolver viewResolver:this.viewResolvers){
View view=viewResolver.resolverViewName(viewName,locale);
if(view!=null){
return view;
}
return null;
}
}
-------------------------------------------------------------------
国际化:
1.写对应的资源文件以.properties结尾(key=value)
2,配置文件名字要求:资源文件名称_语言编码_国家编码.properties
举例:steven_zh_CN.properties 中文编码
steven_en_US.properties 英文编码
3.1)国际化资源
2)告知SpringMvc所使用的配置文件
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="abc"></property>
</bean>
注意事项:id必须为messageSource,通过id注入而不是通过类型注入
4.JSTL
1)Core:
2)ftm:格式化标签message
如何给视图直接定义一个映射
<mvc:view-controller path="/change" view-name="test"/>
如果给某一个视图配置映射信息,其他的映射信息全部无效,解决方案
<mvc:annotation-driven></mvc:annotation-driven>
-------------------------------------------------------
自定义视图
I.视图类型:实现View接口
1).ContentType:告知SpringContentType的类型
2).页面渲染( render view )
II.视图加载到SpringMvc容器中去
III.写出对应的视图解析器:BeanNameResolver
<!-- 配置自定义的试图解析器:BeanNameViewResolver -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
value值越大优先级越小,InternalResourceViewResolver value是整数的最大值
<property name="order" value="100"></property>
</bean>
<mvc:view-controller path="/myView" view-name="BeanNameViewResolver"/>
path:是首字母小写的类名 view-name是对应的显示页面
注解:
@Component //只是一个原注解,它可以标注其他注解,被标记的注解起到相同或类似的作用
@Controller对应控制层的Bean,也就是Action
@Service对应的是业务层Bean
@Repository对应数据访问层Bean
搜索类快捷键:Ctrl+Shift+T
注意事项:1.初始化参数指向当前SpringMvc的配置文件的路径
2.配置当前Servlet映射修改为/
配置application.xml:1.@controller @Service
2.视图解析器:逻辑视图、物理视图
配置Spring文件:必须与web.xml中DispatcherServlet配置化参数保持一致
注意事项:1.自动扫描的包<context:component-scan=""></context:component-scan>
2.配置一个bean:视图解析器将逻辑视图转化为物理视图
IntervalResourceViewResover
配置控制器:1.任何的javabean都可以作为控制器 @Controller
方法可以转化为请求并做出响应
public String hello(){}
方法的返回值:当前业务完毕后,跳转到web资源("逻辑视图的名称")
SpringMVC中Ant的三种风格:
1.?:匹配文件名中任意一个字符 localhost:8080/SpringMvc/s/antStyle
2.*:比配文件名中任意字符localhost:8080/SpringMvc/sss/antStyle
3.**:匹配多层路径localhost:8080/SpringMvc/sss/aaa/antStyle
REST风格:(资源)表现层状态转化
四个操作动词:1.GET获取资源 2.POST新建资源 3.PUT更新资源 4.DELETE删除资源
HiddenHttpMethodFilter:可以过滤我问所有的请求,并将请求方式分为Get、Post、Delete、Put四种
Get-->就是Get请求方式
Post-->查看是否有一个method的请求方式并且是Delete、Put请求它将细分
如果没有它就是Post请求
具体步骤1.<form action="SpringMvc/testDelete/16" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit" value="DELETE">
批注:将类型改为hidden,name必须为_method value=delete或put
2.在web.xml中添加过滤器filter,配置HiddenHttpFilter过滤器
<filter>
<filter-name>HiddenMethodHttpFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenMethodHttpFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.将请求方法改为 RequestMethod.DELETE修改为delete
@RequestMapping(value="/**/testDelete/{id}",method=RequestMethod.DELETE)
@RequestParam I.作用将请求参数与控制器中的方法形参进行绑定
II.使用技巧:1.如果形参与请求参数名字一致可以省略RequestParam的value
2.如果形参与请求参数名字不一致必须使用@RequestParam(value="请求参数")
3.@RequestParam常用属性:value="请求参数的名称"
Require:是否为必须的
@RequestHeader:作用获取报头信息
具体用法:@RequestHeader(value="Accept")
@CookieValue:作用cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。
具体用法:testCookieValue(@CookieValue(value="JSESSIONID") String Id)
使用Servlet API作为入参:HttpServletRequest:testServletAPI(HttpServletRequest request)
HttpServletResponse
HttpSession
InputStream
OutPutStream
Reader
Writer
Out:
Locale
ModelAndView:既包含视图信息也包含模型数据信息
添加数据模型的方法:1.ModelAndView addObject(String atrributeName,Object atrributeValue)
2.ModelAndView addAllObject(Map<String,?> modelMap)
设置视图:1.void setView(View view)
2.void setNameView(String viewName)
在方法的内部,创建ModelAndView
注意:ModelAndView 数据模型的值放置在Request里
Map、Model、ModelMap处理模型数据:
Map.put(String,Object);
Modle.addArtrribute(String,Object);
ModelMap.addAtrribute(String,Object);
@SessionAtrributes(value={""})
I.要求放如的值必须在数据模型里(在Request请求域中是有效的)
II.属性标注:1)通过数据模型中的key值完成session中的数据共享的设置
value里的值是String[]
2.value={"a","b"}
2)可以通过模型数据中的类型,完成共享数据的设置
---------------------------------------------------------
@ModelAtrribute:主要作用是对象合并
I.对象合并具体流程:
1.再调用核心业务前,先从数据库中查出指定数据并封装到User对象中
2.原始User对象的引用,使用方法的入参即可
3.将用户输入的请求参数的值映射到方法作为参数
II. 1.方法:在业务方法执行之前,被调用的方法
I.修饰无返回值的方法
II.修饰有返回值的方法
2.业务方法的入参
III、业务方法的入参,告知方法入参进行与前端控件绑定之前,需要获取相对应的key值
视图解析流程:
1.视图页面的渲染。View视图来做render
2.跳转到目标视图,使用请求转发。
3.遍历视图解析器的集合,将逻辑视图转化为物理视图
SpringMvc当中进行视图解析器的配置
protected View resolverViewName(String viewName,Map<String,Object>
model,locale,locale,HttpRequest request){
for(ViewResolver viewResolver:this.viewResolvers){
View view=viewResolver.resolverViewName(viewName,locale);
if(view!=null){
return view;
}
return null;
}
}
-------------------------------------------------------------------
国际化:
1.写对应的资源文件以.properties结尾(key=value)
2,配置文件名字要求:资源文件名称_语言编码_国家编码.properties
举例:steven_zh_CN.properties 中文编码
steven_en_US.properties 英文编码
3.1)国际化资源
2)告知SpringMvc所使用的配置文件
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="abc"></property>
</bean>
注意事项:id必须为messageSource,通过id注入而不是通过类型注入
4.JSTL
1)Core:
2)ftm:格式化标签message
如何给视图直接定义一个映射
<mvc:view-controller path="/change" view-name="test"/>
如果给某一个视图配置映射信息,其他的映射信息全部无效,解决方案
<mvc:annotation-driven></mvc:annotation-driven>
-------------------------------------------------------
自定义视图
I.视图类型:实现View接口
1).ContentType:告知SpringContentType的类型
2).页面渲染( render view )
II.视图加载到SpringMvc容器中去
III.写出对应的视图解析器:BeanNameResolver
<!-- 配置自定义的试图解析器:BeanNameViewResolver -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
value值越大优先级越小,InternalResourceViewResolver value是整数的最大值
<property name="order" value="100"></property>
</bean>
<mvc:view-controller path="/myView" view-name="BeanNameViewResolver"/>
path:是首字母小写的类名 view-name是对应的显示页面
注解:
@Component //只是一个原注解,它可以标注其他注解,被标记的注解起到相同或类似的作用
@Controller对应控制层的Bean,也就是Action
@Service对应的是业务层Bean
@Repository对应数据访问层Bean
搜索类快捷键:Ctrl+Shift+T