SpringMVC----入门

1.Spring MVC是什么

Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的。
另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制
器其实拆为处理器映射器 (Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制
器/动作/处理器为Controller接口(仅包含 ModelAndView handleRequest(request, response)  方法)的
实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件 上传等;提供了非常
灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

2.SpringMVC的内部调用

URL:localhost:8080/项目名称/addUserServlet

URL:localhost:8080/项目名称/addUser.action
Handler:Controller------>service----->dao
组件认识:
1.前端控制器:DispatcherServlet--->主要用来转发和响应
2.处理器映射器:HandlerMapping---->通过用户的URL找到与之匹配的Controller
3.处理器适配器:HandlerAdapter---->通过某种规则,调用处理器去执行Controller里面的方法
4.视图解析器:ModelAndView--->通过页面的逻辑名称,找到真实的页面

具体步骤如下:
1.客户端发送请求,请求执行addUser.action这个操作
2.请求处理器映射器根据用户的url提供对应的Controller
3. 处理器映射器进行匹配,返回一个对应的 Controller
4.请求处理器适配器处理该操作
5.处理器适配器经过匹配,请求处理器执行操作
6.处理器经过处理后将结果返回给处理器适配器,处理结果时ModleAndView对象
在该对象中保存了 2 部分数据   Model 返回值信息   View 存放页面的名称

7.ModelAndView返回给前端控制器

8.前端控制器请求视图解析器解析view

9.视图解析器经过处理 返回一个页面的真实路径 /WEB-INF/addUser.jsp

3.编写Controller

4.配置视图解析器

说明:经过处理器处理返回的是一个view的名称,这时 不能通过名称找到具体的页面路径。所有需要视图解析器做处理

  前缀:/WEB-INF/

  页面名称 hello

 后缀:.jsp

 

真实路径/WEB-INF/hello.jsp

 

5.SpringMVC的注解形式

修改配置文件 添加两行注解

<mvc:annotation-driven/>   匹配用户的Url

<context:component-scan base-package="controller"/>   管理对象


说明:使用SpringMVC的注解形式,首先通过@Controller注解管理对应的类。

 根据用户提交的URL @RequestMapping(value="/hello.action")匹配。如果匹配成功了,则执行该注解下的方法 然后返回一个字符串。这个字符串就是返回页面的名称。这个名称经过视图解析器解析成具体的路径。

 

6.使用SpringMVC获取参数

在参数列表中,你需要什么样的参数,就写什么

7.1获取Request对象

7.2获取字符串参数

注意:属性的值和页面匹配

7.3封装对象


说明:使用对象赋值时,其中调用的是对象自身的setXXX().所以使用时,需要添加setXXX().

 

7.4封装日期

如果使用 2017/3/11该日期可以直接转化为Date格式

如果使用 2017-3-11 需要手动转换 否则


//说明:该方法只对当前的Controller有效

@InitBinder

public void InitBinder (ServletRequestDataBinder binder){

binder.registerCustomEditor(

java.util.Date.class,

new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));

}

7.5同名提交框

1.如果页面中有同名提交问题,如果接收参数为String,那么参数就会自动的拼接,中间用“,”号隔开。



2.如果同名提交框使用数组接收,那么就会自动的转化为数组格式。

8.解决中文乱码问题,需要再web.xml添加过滤器


9.参数不匹配

如果用户参数列表中写的参数名称和用户页面提交的名称如果不一致。默认情况下,不能正确赋值。

@RequestParam(value="hobby",required=true,defaultValue="敲电脑") String[]hobbys

 

通过该注解,能够解决参数名称不一致

value="hobby"  必须要与页面中的name属性值一致。

内部将hobby自动转化为 hobbys

 

required=true/false 是否必须传递该参数

defaultValue="XXX"         默认值,如果没有传递该参数,则添加默认值。

 

 

10.重定向和转发

重定向:请求至少2次。传值不能实现。浏览器地址发送改变

redirect:/toUser.action

 

转发:    发送一次请求   值能够实现传递。浏览器地址不变

forward:/toUser.action

 

补充:

如果页面放置到WebRoot下,可以通过浏览器直接访问页面,这样做不安全。

为了安全应该将页面放置到WEB-INF下边。这是通过浏览器 将不能直接访问web-inf下的页面。这时只能通过程序内部跳转才能访问。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值