springMVC

springMVC

springmvc 核心组件

dispathcherServlet 前置控制器,负责调度其他组件执行,降低不同组件之间的耦合性,是springMVC的核心模块

handle:处理器,完成具体的业务逻辑,相当于之前的servlet

handlemapping:DispathcherServlet通过HandleMapping将请求映射到不同的Handle

HandleAdapeter:处理适配器,在handle业务方法执行之前执行,handle执行之前,通常需要进行一系列的操作包括表单数据的封装,数据类型的转换,数据校验,这些工作交给HandleAdapter来完成,DispatherServlet通过HandleAdapter来执行不同的Handler.

Modelandview: 装载了数据和视图,作为handle的处理结果返回给DispatherServlet

ViewResolver:视图解析器:DispatherServlet将接收的逻辑视图解析成物理视图,将渲染的结果响应给用户。

如何使用

引入依赖:

  1. spring-webmvc 与spring版本一直5.X.X

  2. 配置dispathcerServlet @WebServlet

    <!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"\>
    ​
    <web-app>
    3、创建 springmvc.xml 文件。
    <display-name>Archetype Created WebApplication</display-name>
    <servlet><servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.Dispa
    tcherServlet</servlet-class>
    <init-param>
    <paramname>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    </servlet><servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    </web-app>

    3.创建springmvc.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframew
    ork.org/schema/beans
    http://www.springframework.org/schema/beans
    /spring-beans.xsd
    http://www.springframework.org/schema/conte
    xt
    http://www.springframework.org/schema/conte
    xt/spring-context.xsd">
    <!-- 配置自动扫包 -->
    <context:component-scan base-
    package="com.southwind">
    </context:component-scan>
    <!-- 视图解析器 -->
    <bean
    class="org.springframework.web.servlet.view
    .InternalResourceViewResolver">
    <!-- 前缀 -->
    <property name="prefix" value="/">
    </property>
    <!-- 后缀 -->
    4、创建 Handler
    <property name="suffix"
    value=".jsp"></property>
    </bean>
    </beans>
@Controller
public class Hello {
    @RequestMapping("/index")
    public String index(){
        System.out.println("index");
        return "index";
    }
}
​

URL请求/index,通过注解直接映射到index方法中区,直接执行该方法,并返回逻辑视图,将逻辑视图的值交给试图解析器,补上前缀以及后缀,形成真的物理视图路径,找到该物理试图,返回给客户端。

常用注解

@Contoller 标注控制器类,使得一个java类成为一个控制器,处理dispathcherServlet转发过来的请求。

@RequestMapping springmvc 通过该注解将URL请求与业务方法进行映射,控制器类定义出也可以添加,等于多了一层访问路径。

@RequestMapping 后可以加value="",等同于直接写地址。

method:指定请求的method类型,包括DELETE,POST,GET,PUT.

404:资源找不到,你要检查 url 是否拼写正确。 405:请求类型不匹配,只能接收 POST,你发送的是 GET。 400:参数不匹配,检查 URL 的传参。 500:代码中抛出异常,逻辑代码的问题。

@RequestMapping 后params="name"则必选在浏览器放入name=...

多个参数{"name","id=10"}--->表示name参数,id必须等于10;浏览器中写入:?name=cat&id=10;

​
形参实参不一致,则必须添加。
@RequestMapping(value = "/index",method =
RequestMethod.GET,params =
{"name","id=10"})
public String index(@RequestParam("name")
String title,@RequestParam("id") Integer
num){
System.out.println(title);
System.out.println(num + 1);
//逻辑视图
return "index";
}

@RequestParam 的作用是将 URL 中的参数名和业务方法中的形参名进行映射,如果 URL 中的参数名本身和业 务方法中的形参名一致,可以不添加@RequestParam,自动根据名字完成映射,如果不一致,则必须添加。

spring mvc 也支持restful风格的传参

用HTTP请求的四种类来表示CRUD四种基本操作

GET表示查询

POST表示添加

PUT表示修改

DELETE表示删除

传统URL:localhost:8080/test?id=1&name=tom

RestFul URL:localhost:8080/test/1

@Controller
@RequestMapping("/rest")
public class RestFulHandler {
      //RestFul风格的传参  
    @RequestMapping(value = "/index/{id}/{name}")
    public String index(@PathVariable("id") Integer id, @PathVariable("name") String name){
        return  "index";
    }
​

spring mvc取前端的表单,能够一次性全部取出。

示例

前端
<form action="/rest/register"
method="post">
用户名:<input type="text"
name="username"/><br/>
密码:<input type="text"
name="password"/><br/>
年龄:<input type="text" name="age"/>
<br/>
电话:<input type="text" name="phone"/>
<br/>
地址:<input type="text" name="email"/>
<br/>
<input type="submit" />
</form>

pojo

@DATA
public class User {
    private String username;
    private String password;
    private Integer age;
    private String phone;
    private String email;
​
}

后台

@Controller
@RequestMapping("/rest")
public class RestFulHandler {
    @RequestMapping(value = "register",method = RequestMethod.POST)
    public String register(User user){
        
        return "index";
    }
​
}
​

后端方法跳到另一个方法

@RequestMapping(value = "register",method = RequestMethod.POST)
    public String register(User user){
        return "redirect:/rest/ok";
    }
@RequestMapping(value="/ok")
    public String ok(){
        return "index";
    }
前端解析后端

spring mvc视图解析器

Controller 中的数据如何传给 JSP HttpServletRequest Map Model ModelAndView @ModelAttribute @SessionAttribute @SessionAttribute 是将模**型数据直接同步到 session对象中**,session 和 request 一样都是 JSP 内置对象,session 的作用域更大,request 只能在一次请求中存活,请求结束,request 销毁,里面保存的数据也就没了,session 作用于一个会话(打开浏览器发起请求,到关闭浏览器的整个过程),用 session 来保存用户登录信息

放在方法处。

当类中的方法向request中存放数据的同时,会自动将数据同步到session。

保留request中的 key/value。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值