第一天

springmvc.xml 一个配置文件,SpringMVC本身就是Spring的子项目,对Spring兼容性很好,不需要做很多配置。

这里只配置一个Controller扫描就可以了,让Spring对页面控制层Controller进行管理。

配置SpringMVC的前端控制器DispatcherServlet

@RequestMapping:里面放的是请求的url,和用户请求的url进行匹配,action可以写也可以不写@RequestMapping("/itemList.action")

创建ModelAndView,用来存放数据和视图

使用组件扫描器省去在spring容器配置每个Controller类的繁琐。

使用<context:component-scan>自动扫描标记@Controller的控制器类,

在springmvc.xml配置文件中配置

<!-- 配置逻辑视图的前缀 -->

<propertyname="prefix"value="/WEB-INF/jsp/"/>

<!-- 配置逻辑视图的后缀 -->

<propertyname="suffix"value=".jsp"/>

</bean>

逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为ItemList,则最终返回的jsp视图地址:

“WEB-INF/jsp/itemList.jsp”

// 视图解析器根据前缀+逻辑视图名+后缀拼接出来物理路径

modelAndView.setViewName("itemList");

returnmodelAndView;

POST乱码问题

springmvc与struts2不同

1、springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。

2、springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

3、Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面。Jsp视图解析器默认使用jstl。

/拦截所有不包含jsp /*拦截所有(真拦截)

第二天

@RequestMapping

通过@RequestMapping注解可以定义不同的处理器映射规则。

URL路径映射

@RequestMapping(value="item")@RequestMapping("/item"

value的值是数组,可以将多个url映射到同一个方法

添加在类上面

class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头

请求方法限定

除了可以对url进行设置,还可以限定请求进来的方法

u限定GET方法

@RequestMapping(method = RequestMethod.GET)

如果通过POST访问则报错:

HTTP Status 405 - Request method 'POST' not supported

Controller方法返回值

返回ModelAndView

controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view

参考第一天的内容

1.2.返回void

Controller方法形参上可以定义requestresponse,使用requestresponse指定响应结果:

1、使用request转发页面,如下:

request.getRequestDispatcher("页面路径").forward(request, response);

request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);

2、可以通过response页面重定向:

response.sendRedirect("url")

response.sendRedirect("/springmvc-web2/itemEdit.action");

3、可以通过response指定响应结果,例如响应json数据如下:

response.getWriter().print("{\"abc\":123}");

例如:

@RequestMapping(value = "itemList",method = RequestMethod.POST)

u限定POST方法

@RequestMapping(method = RequestMethod.POST

如果通过GET访问则报错:

HTTP Status 405 - Request method 'GET' not supported

uGETPOST都可以

@RequestMapping(method = {RequestMethod.GET,RequestMethod.POST})

返回字符串

逻辑视图名

controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

Redirect重定向

Contrller方法返回字符串可以重定向到一个url地址

forward转发

Controller方法执行后继续执行另一个Controller方法

异常处理器

springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。

json数据交互

@RequestBody

作用:

@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。

@ResponseBody

作用:

@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端

配置json转换器

如果不使用注解驱动<mvc:annotation-driven />,就需要给处理器适配器配置json转换器,参考之前学习的自定义参数绑定。

RESTful支持

什么是restful

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

资源:互联网所有的事物都可以被抽象为资源

资源操作:使用POSTDELETEPUTGET,使用不同方法对资源进行操作。

分别对应 添加、 删除、修改、查询。

Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。

图片上传,使用上传解析器

优质内容筛选与推荐>>
1、eclipse常用插件
2、城中村宽带出租最稳定、最省钱、最省心的宽带一体化(包括电源)解决方案及成本核算
3、全部博文集锦第三期CHM文件,及十三个经典算法研究PDF文档
4、cut命令详解
5、设置TabBar图片


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号