当前位置:首页 > 经验

SSM框架-SpringMVC详解-mvc框架

springmvc概述Springmvc是spring框架的一个模块,spring和springmvc不用中间整合层整合。

Springmvc是一个基于mvc的web框架

表现层的三大任务:

URL到controller的映射设计模式是一种都可以用的应用编程思想。

在MVC设计模式中觉得, 所有应用都可以分为三部分组成:

(1)控制程序流转的控制器(Controller)

(2)封装资料处理资料的模型(Model)

(3)负责展示资料的视图(view)

springmvc的实现原理

(1) .玩家发送请求 至 前端控制器(DispatcherServlet);

提示:DispatcherServlet的作用:接收请求,调用其它组件处理请求,响应结 果,等于转发器、中央处理器,是整个流程控制的中心

(2) .前端控制器(DispatcherServlet)收到请求后调用处理器映射器 (HandlerMapping)

处理器映射器(HandlerMapping)寻找详细的Controller(可以根据xml配置、注解进 行查找),并将Controller返回给DispatcherServlet;

(3) .前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。处理 器适配器经历过适配调用详细的Controller;(Controller-- service -- Dao -- 资料库)

Controller执行完成后返回ModelAndView,

提示:Model(模型资料,即Controller处理的结果,Map) View(逻辑视图名,即 负责展示结果的JSP页面的名字)

处理器适配器(HandlerAdapter)将controller执行的结果(ModelAndView)返回给前 端控制器(DispatcherServlet);

(4) .前端控制器(DispatcherServlet)将执行的结果(ModelAndView)传给视图分析 器(ViewReslover)

视图分析器(ViewReslover)根据View(逻辑视图名)分析后返回详细JSP页面

(5) .前端控制器(DispatcherServlet)根据Model对View进行渲染(即将模型资料 填充至视图中);

前端控制器(DispatcherServlet)将填充了资料的网页响应给玩家

springmvc实现第一步:创建maven项目springmvc

第二步:在pom文件中添加依赖

dependencies    !-- 单元测试 --    dependency        groupIdjunit/groupId        artifactIdjunit/artifactId        version4.10/version        scopetest/scope    /dependency    !-- SpringMVC的jar包 --    dependency        groupIdorg.springframework/groupId        artifactIdspring-webmvc/artifactId        version4.1.3.RELEASE/version    /dependency    !-- servlet 和 jsp的jar包 --    dependency        groupIdjavax.servlet/groupId        artifactIdservlet-api/artifactId        version2.5/version        scopeprovided/scope    /dependency    dependency        groupIdjavax.servlet/groupId        artifactIdjsp-api/artifactId        version2.0/version        scopeprovided/scope    /dependency    !-- java对象转换json的工具类    dependency        groupIdcom.fasterxml.jackson.core/groupId        artifactIdjackson-databind/artifactId        version2.5.1/version    /dependency    --/dependencies第三步:web.xml中配置前端控制器

?xml version="1.0" encoding="UTF-8"?web-app xmlns:xsi="

?xml version="1.0" encoding="UTF-8"?beans xmlns="

restController=controller+responsebody:restController返回json对象

controller返回string:modelandview

controller+responsebody返回json对象

package com.tedu.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/* @Controller,如果目前类所在的包配置了Spring容器包扫描,有着 * 该注解的类,就会作为bean注册到spring容器中,由spring容器 * 创建实例。 */@Controllerpublic class HelloController {    /* @RequestMapping为目前途径配置采访路径     * 当浏览器采访

在WEB-INF/pages/目录下,创建home.jsp页面。

%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%!DOCTYPE htmlhtmlheadmeta charset="UTF-8"titleInsert title here/title/headbody    h1day20-springmvc...home.jsp.../h1/body/html第七步:发送请求,进行测试

打开浏览器,输入url地址:  地址。

重定向和转发重定向redirect和转发forward的区别

1,重定向浏览器地址栏展现新的地址,转发地址栏不变

2,重定向可以重定向其他网址,转发就只能转发到本网址中的途径。

redirect重定向适合用于原先的网页不继续提供服务了。

@Controllerpublic class UserController {    //重定向,原先的登录地址    @RequestMapping("/login")    public String login() {        return "redirect:

转发后浏览器的地址栏变为转发后的地址。

在chrome的调试窗口中network中调查status code

forward转发转发后浏览器地址栏还是原来的地址。所以转发前请求的参数在转发后依然可以读取到。

//第一输入玩家名和密码    @RequestMapping("/loginByName")    @ResponseBody    public String loginByNamePwd(String username,String password) {                return "login&#34    }        //再一次登录时,还得输入验证码    @RequestMapping("/loginByCode")    public String loginByCode(String username,String password,String code) {        //判断验证码是否正确        return "forward:/loginByName&#34    }

restful风味@PathVariable用来将请求URL中的模板变量映射到功能处理途径的参数上

形成RUSTFul形式,这将是未来的进步趋势。它更加简洁,安全。强化URL GET采访方法。

@RestControllerpublic class OrderCotroller {    @RequestMapping("/order/{startTime}/{endTime}")    public String searchByDate(@PathVariable String startTime,            @PathVariable String endTime) {        return "restful startTime="+startTime+",endtime="+endtime;    }}浏览器采访的URL

全自动将URL 中模板变量{startTime}和{endTime}绑定到@PathVariable注解的同名参数上,即入参后startTime=“2019-10-01”、endTime=“2021-10-10”。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章