六、SpringMVC从入门到入坟

一、SpringMVC概念

SpringMVC 是 Spring 框架中的一个模块,它是一个基于 MVC设计模式的 Web 框架,用于构建基于 Java 技术的 Web 应用程序。Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。

它的主要原理是将 Web 应用程序分成模型(Model)和视图(View)两个部分,并采用控制器(Controller)来管理它们之间的交互。模型表示 Web 应用程序中的数据部分,通常对应于 Java 对象或数据库表;视图表示 Web 应用程序中的用户界面部分,通常对应于 HTML、JSP 页面等;控制器作为 Web 应用程序的中心组件,负责管理模型和视图之间的数据传递和交互。

二、SpringMVC基础程序

1、添加框架支持
在这里插入图片描述
2、导入pom依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.27</version>
        </dependency>
    </dependencies>

3、创建jsp包,在包下创建hello.jsp
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC</title>
</head>
<body>
${msg}
</body>
</html>

4、在controller层创建HelloController.java

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        return "hello";
    }
}

5、配置springmvc-servlet.xml

<?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">

    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="com.demo.controller"/>
    <!-- 让Spring MVC不处理静态资源 -->
    <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>

6、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--1.注册servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 启动顺序,数字越小,启动越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--所有请求都会被springmvc拦截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

7、配置tomcat服务器
在这里插入图片描述
8、打开模块设置,创建lib文件夹,把库导进去(不做这步会404)
在这里插入图片描述

9、运行后输入http://localhost:8080/hello测试
在这里插入图片描述

三、RestFul风格

传统方式操作资源 :通过不同的参数来实现不同的效果!方法单一,post 和 get

http://127.0.0.1/item/queryItem.action?id=1 查询,GET

http://127.0.0.1/item/saveItem.action 新增,POST

http://127.0.0.1/item/updateItem.action 更新,POST

http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

使用RESTful操作资源 :可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!

http://127.0.0.1/item/1 查询,GET

http://127.0.0.1/item 新增,POST

http://127.0.0.1/item 更新,PUT

http://127.0.0.1/item/1 删除,DELETE

在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。

 @RequestMapping("/commit/{p1}/{p2}")
    public String index(@PathVariable int p1, @PathVariable int p2, Model model){

        int result = p1+p2;
        model.addAttribute("msg", "结果:"+result);
        //返回视图位置
        return "hello";

    }

使用method属性指定请求类型

    @RequestMapping(value = "/hello",method = {RequestMethod.POST})
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        return "hello";
    }

所有的地址栏请求默认都会是GET类型的,所以会报405错误

以下几个是组合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
如@GetMapping 是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

四、数据处理及跳转

通过SpringMVC来实现转发和重定向 - 无需视图解析器;
测试前,需要将视图解析器注释掉

 //转发
    @RequestMapping(value = "/hello")
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        return "/hello.jsp";
    }
//转发
    @RequestMapping(value = "/hello")
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        return "forward:/hello.jsp";
    }
    @RequestMapping(value = "/hello")
    public String sayHello(Model model){
        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        return "redirect:/index.jsp";
    }

@RequestParam和@RequestBody
@RequestParam用于获取URL和Header中的参数,而@RequestBody用于获取请求体中的数据。一般@RequestBody用于传输一个对象,@RequestParam用于传输基本类型,例如

public void createUser(@RequestParam(name = "id") int id, @RequestBody User user) {
}

@Controller和@RestController
都可以用来标注一个类,表示这个类是处理HTTP请求的控制器。它们的区别如下:

@Controller注解用于标记一个类是Spring MVC中的控制器,可以处理HTTP请求。在方法中处理请求时,需要使用@ResponseBody注解将方法的返回值转换为HTTP响应体。

@RestController是一个组合注解,包含@Controller和@ResponseBody注解,对于Spring 4.0及以上版本,建议使用@RestController。使用@RestController注解标注的控制器自动将所有带有@ResponseBody的方法返回的对象转换为JSON或XML格式的响应体。

五、Json交互

六、Ajax

七、拦截器


参考视频:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值