SpringMVC初步搭建:三层架构与MVC模型详解
目录一、三层框架和MVC1.三层框架2.MVC模型二、SpringMVC的入门案例1.SpringMVC概述1SpringMVC的概述2SpringMVC在三层架构的位置属于表现层3执行流程2.SpringMVC的入门案例1创建一个mavenJavaWeb工程2目录3先导入依赖jar包4web.xml5index.jsp页面6suc.jsp7HelloController8springmvc.xml9可以再写一个RoleController10启动tomcat观察结果·只有一级目录·存在两级目录的情况下3.总结流程4.RequestMapping注解一、三层框架和MVC1.三层框架1我们开发服务器端程序一般基于两种形式一种是C/S架构一种是B/S架构2使用Java语言基本都是B/S而B/S架构又分成了三层架构3三层架构①表现层WEB层用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型②业务层用来处理公司具体的业务逻辑的③持久层用来操作数据库的2.MVC模型1MVC 全称Model View Controller模型视图控制器每个部分各司其职。2Model数据模型javaBean的类用来进行数据封装3View指JSP、HTML用来展示数据给用户4Controller用来接收用户的请求整个流程的控制器。用来进行数据校验等。二、SpringMVC的入门案例1.SpringMVC概述1SpringMVC的概述①是一种基于Java实现的MVC设计的模型的请求驱动类型的轻量级WEB框架。②SpringMVC属于SpringFrameWork的后续产品。Spring框架提供了构建Web应用程序的全功能MVC模块。③使用Spring可插入的SpringMVC架构从而再使用Spring进行WEB开发时可以选择Spring的SprinngMVC框架或集成其他MVC开发框架。2SpringMVC在三层架构的位置属于表现层3执行流程·浏览器发送请求到DispatcherServlet↓·DispatcherServlet 请求HandlerMapping查找对应 Controller↓·HandlerMapping 返回执行链给前端控制器↓·DispatcherServlet 调用HandlerAdapter执行 Controller↓·Controller 处理业务返回ModelAndView↓·HandlerAdapter 将结果返回给 DispatcherServlet↓·DispatcherServlet 请求ViewResolver解析视图↓·渲染视图响应给浏览器2.SpringMVC的入门案例1创建一个mavenJavaWeb工程2目录3先导入依赖jar包properties project.build.sourceEncodingUTF-8/project.build.sourceEncoding maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target spring.version5.0.2.RELEASE/spring.version /properties dependencies dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.13.1/version scopetest/scope /dependency dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-web/artifactId version${spring.version}/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version${spring.version}/version /dependency dependency groupIdjavax.servlet/groupId artifactIdservlet-api/artifactId version2.5/version scopeprovided/scope /dependency dependency groupIdjavax.servlet.jsp/groupId artifactIdjsp-api/artifactId version2.0/version scopeprovided/scope /dependency dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version4.3.21.RELEASE/version /dependency /dependencies4web.xml在web.xml里配置前端控制器、加载springmvc.xml和配置启动加载还有要拦截的路径!--配置前端控制器-- servlet servlet-namedispatcherServlet/servlet-name servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class !--加载springmvc.xml配置文件配置的是Spring配置-- init-param param-namecontextConfigLocation/param-name param-valueclasspath:springmvc.xml/param-value /init-param !--配置启动加载-- load-on-startup1/load-on-startup /servlet servlet-mapping servlet-namedispatcherServlet/servlet-name url-pattern*.do/url-pattern /servlet-mapping5index.jsp页面% page contentTypetext/html;charsetUTF-8 languagejava% html head title入门程序/title /head body %--超链接--% h3入门/h3 a href/hello.do入门程序/a /body /html6suc.jsphtml head title成功/title /head body h1入门成功了2/h1 /body /html7HelloControllerpackage com.qcby.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 控制器类处理用户请求 */ //交给IOC容器管理 Controller public class HelloController { RequestMapping(path/hello.do) public String sayHello(){ System.out.println(入门方法执行了2); //跳转到JSP页面的路径默认使用请求的转发 //return /WEB-INF/pages/suc/jsp; //配置了视图解析器后写法 return suc; } }8springmvc.xml·声明好要扫描的包以便扫描包下面的注解·配置好视图解析器和返回的字符串进行拼接定位到对应的页面·配置好开启mvc的支持!-- 配置spring创建容器时要扫描的包 -- context:component-scan base-packagecom.qcby/context:component-scan !-- 配置视图解析器 -- bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolver property nameprefix value/WEB-INF/pages//property property namesuffix value.jsp/property /bean !-- 配置spring开启注解mvc的支持-- mvc:annotation-driven/mvc:annotation-driven9可以再写一个RoleControllerpackage com.qcby.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * 角色模块的类 */ Controller RequestMapping(path/role) //一级请求路径 public class RoleController { /** * /role/save.do * method当前方法允许请求方式能访问 * params请求路径上传参数 * return */ RequestMapping(pathsave.do,method{RequestMethod.GET},paramsusername) public String save(){ System.out.println(保存角色); return suc; } RequestMapping(valuedelete.do) public String delete(){ System.out.println(删除角色); return suc; } }10启动tomcat观察结果·只有一级目录·存在两级目录的情况下3.总结流程·启动tomcat服务器因为配置了load-on-upstart标签所以创建了DispacherServlet对象就会加载springmvc.xml配置文件↓·开启注解扫描HelloController对象就会被创建↓·从index.jsp发送请求请求会先到达DispatcherServlet核心控制器根据配置RequestMapping注解找到具体执行方法↓·根据执行方法的返回值再根据配置的视图解析器去指定的目录下查找指定名称的JSP文件↓·Tomcat服务器渲染页面做出响应Springmvc的组件分析·前端控制器DispatcherServlet·处理器映射器HandlerMapping·处理器Handler·处理器适配器View Resolver·视图解析器View Resolver·视图View4.RequestMapping注解·作用是处理好URL和对应处理方法的对应关系·应用①在类方法上②在方法上③路径可以不编写/表示应用根目录开始·属性·path 指定请求路径的URL·value value属性和path属性一样·method 指定该方法的请求方法·params 执行限制请求参数的条件