SpringMVC第一天

SpringMvc执行过程源码分析
1.tomcat容器启动创建对象的过程
通过标签指定的1创建dispatchServlet对象
DispatchServlet父类是继承HttpServlet的·是一个Servlet,在被创建时候,会执行init()
在init()方法中:
//创建容器读取配置文件
WebApplicationContext ctx = new ClassPathXmlApplicationContext(“springmvc。xml”)
//把容器对象放入到ServletContext中
getServletContext().setAttribute(key,ctx);
说一下创建容器的作用:
可以创建@controller所在类的对象,比如上创建的myController对象
这个对象被放入到SpringMvc容器中,容器其实就是一个Map,因为计算机的数据结构问题
类似map.put(“myController”,myController对象)

2.请求的的过程
servlet的service方法是进行请求的
service(HttpServletRequest request ,HttpServletResponse response)
在执行 DoService(HttpServletRequest request ,HttpServletResponse response)
在执行 doDispatch(request,response)是容器请求的核心方法,包含了我们需要的对象
比如说modelAndView等,这个方法的里面会调用我们创建的controller里面的方法(中央调度器的方法),
DispatchServlet.doDispatch()接受返回参数,传递请求
提示一点关键内容,在我们的项目目录下面,webapp下的内容对用户是开放的
而 webapp下的WEB-INF目录下的内容是对用户不开放的
不能直接访问,资源受保护




配置了视图解析去后,可以使用逻辑名称(文件名)指定视图
框架配置了视图解析器以后使用 解析器的前缀+逻辑名称+后缀组成完整路径,就是字符串的连接操作

3.处理器四种请求参数 (controller方法内的参数)
1)HttpServletRequest
2)HttpServletResponse
3)HttpSession
4)请求携带的参数(形参和请求参数把持一致)
要说明的:后台方法使用包装类接受参数的好处:可以接受null “”,所有的参数接受的时候都是String
在提交请求参数:post传值中文会出现乱码问题,get请求不会出现
使用过滤器完美的解决,可以自定义,也可以使用框架现成的过滤器
4.过滤器 :位于spring-web包中


characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter


encoding
utf-8



forceRequestEncoding
true



forceResponseEncoding
true



characterEncodingFilter

/*

源码:底层是filter 执行子类的doFilter()
在执行doFilterInternal(httpServletRequest request,HttpServletResponse response)
在这方法中设置请求响应的编码,如果在获取web.xml中设置的属性,
如果没有设置,那就设置输入的编码,如果设置了,将二者都进行设置编码
三层架构的对应:springMVC–界面层:接受用户请求,显示处理结果(springMvc容器的创建,管理控制器对象,接受请求处理结果)
:spring --业务层:处理业务逻辑,spring创建service dao工具类对象
:Mybatis-- 持久层:访问数据库,crud操作。
中央带调度器L DispatchServlet
前端控制器L FrontController(和中央调度器是同一个东西)
后端控制器L @Controller
5@RequestParam :(逐个接受)解决请求中和Controller的参数不一致问题
属性:value 请求的参数名(@requestParam(value=“前台请求参数”))
require = true表示请求必须有这个参数,如果没有参数默认为null,保证请求完成
位置:方法参数前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值