1.servlet项目结构与识别
Idea里带个蓝点的文件夹为tomcat吃的网站内容,idea会通过“Web Resource Directory”来标注,会被打成一个war包
这个文件夹里,META-INF为元信息,WEB-INF为不能被路径直接访问到的内容,有tomcat吃的web.xml来映射地址到其中的资源内容。所以这里放的是java、lib、home页面。这些东西都是在web.xml里指定的,tomcat会去先找web.xml这个文件。
2.MVC框架要做哪些事情
- 将url映射到java类或java类的方法 .
- 封装用户提交的数据 .
- 处理请求--调用相关的业务处理--封装响应数据 .
- 将响应的数据进行渲染 . jsp / html 等表示层数据 .
3.以上事情,都是围绕DispatcherServlet来做的。
DispatcherServlet是个请求调度者
4.Spring MVC项目添加步骤:
1.新建web.xml
2.注册DispatcherServlet到/网址,添加contextConfigLocation xml配置文件
3.springmvc xml配置文件里,配置handler,adapter,viewResolver(也可以配置为模版引擎的)的bean。Jsp的ViewResolver可以配置视图网址路径的前缀和后缀
4.配置Controller,映射url,调用service从db获取数据并注入到ModelAndView对象里,以及jsp的文件名,并将Controller这个bean注册到Spring容器中。
5.jsp文件中获取数据,渲染
现在只要注册一个Servlet就行了,其他Servlet不用写了
5.流程
DispatcherServlet拦截所有网址请求,通过Handler获取被映射到的网址的Contrller;通过Adapter执行Controller里的handleRequest接口方法;通过返回的ModelAndView,找ViewResolver来解析,获得相应的视图,调用他来渲染页面并返回response。
可以看到以上流程分三部分,所以SpringMVC的xml配置文件里也要配置这三个部分的核心处理类
对应的,我们的代码要做三个事
- controller设置数据到ModelAndView,一般是调用service接口填充数据
- controller设置要返回的视图名字
- 视图获取controller设置的数据,通过jstl,el表达式等从ViewResolver里获取数据填充页面
6.注解形式启动一个SpringMVC项目的步骤
注解版的springmvc.xml不同,如下
- 让IOC的注解生效(扫描)
- 静态资源过滤 :HTML . JS . CSS . 图片 , 视频 .....(mvc:default-servlet-handler),请求这些静态资源不走SpringMVC
- MVC的注解驱动(mvc:annotation-driven)
- 配置视图解析器
xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.kuang.controller"/> <mvc:default-servlet-handler /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> bean> beans>
接下来就可以用@Controller宏设置Controller类注册到Spring容器里了
类的的函数,可以接收一个Model参数设置数据,返回一个String为视图名称
通过@RequestMapping注解在类和相应的方法上(也可以只在方法上),为一个URL里的路径各段设置与代码之间的映射
总结如下
- 新建一个web项目
- 导入相关jar包
- 编写web.xml , 注册DispatcherServlet
- 编写springmvc配置文件
- 接下来就是去创建对应的控制类 , controller
- 最后完善前端视图和controller之间的对应
- 测试运行调试.
7.Controller和视图弱耦合
可以把视图看作模板,行为结构先定义好,每个Controller送不同的数据给这个模板,展示的东西就不一样
8.
y