• 如何5分钟快速上手SpringMVC


    目录

    一、SpringMVC简介以及配置

    二、简单初步实现SpringMVC开发

    三、SpringMVC实现CRUD


    一、SpringMVC简介以及配置

            ①什么是SpringMVC?

    Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。

    也有的称SpringMVC为:

    1、视图层框架:

            因为SpringMVC部分功能时向用户渲染展示数据的

    2、控制层框架:

            因为DispatcherServlet接受浏览器的任意请求然后转交请求给对应的适配器

            ②SpringMVC处理请求的流程

      2.1 首先用户发送请求-->中央控制器DispatherServlet

      2.2 中央控制器DispatherServlet-->处理器映射器HandlerMapping

      2.3 DispatcherServlet-->处理器适配器HandlerAdapter

      2.4 执行HandlerAdapter-->处理器功能处理方法的调用生成返回值ModelAndView

      2.5 返回值ModelAndView-->ViewRecolver对其进行渲染得到视图View视图对象

      2.6 返回控制权给DispatcherServlet,由DispatcherServlet返回视图对象给用户,流程结束

             ③SpringMVC的配置流程

            3.1导入POM依赖

    1. <dependency>
    2. <groupId>org.springframeworkgroupId>
    3. <artifactId>spring-webmvcartifactId>
    4. <version>${spring.version}version>
    5. dependency>

    补充一个pom依赖是JSTL依赖缺少下面的这两个jar包会报j

    ava.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
    原因:org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包

    1. <dependency>
    2.           <groupId>jstlgroupId>
    3.           <artifactId>jstlartifactId>
    4.           <version>1.2version>
    5.       dependency>
    6.       <dependency>
    7.           <groupId>taglibsgroupId>
    8.           <artifactId>standardartifactId>
    9.           <version>1.1.2version>
    10.       dependency>

     注意:在这里提醒大家,如果我们的pom文件出现问题的话明明导入了jar包,但是还是出现红色波浪的话如下图:

    解决方式就是:英文状态下Shift+ctrl+F更改格式 

            3.2配置对应的框架配置文件

    在WEB-INF下添加springmvc-servlet.xml(spring-mvc.xml)

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    8. <aop:aspectj-autoproxy/>
    9. <context:component-scan base-package="com.zq.ssm"/>
    10. <mvc:annotation-driven>mvc:annotation-driven>
    11. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    12. <property name="viewClass"
    13. value="org.springframework.web.servlet.view.JstlView">property>
    14. <property name="prefix" value="/"/>
    15. <property name="suffix" value=".jsp"/>
    16. bean>
    17. <mvc:resources location="/images/" mapping="/images/**"/>
    18. beans>

            在SpringMVC框架的配置文件中,基础功能包含为:

    3.2.1扫描Base-package

            定义Base-package

            开启注解扫描

            开启动态代理

    3.2.2配置视图解析器

            本地资源视图解析器

            多功能视图解析器

    3.3.3静态资源映射

            3.3 修改web.xml 

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    4. version="3.1">
    5. <display-name>Archetype Created Web Applicationdisplay-name>
    6. <context-param>
    7. <param-name>contextConfigLocationparam-name>
    8. <param-value>classpath:applicationContext.xmlparam-value>
    9. context-param>
    10. <listener>
    11. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    12. listener>
    13. <servlet>
    14. <servlet-name>SpringMVCservlet-name>
    15. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    16. <init-param>
    17. <param-name>contextConfigLocationparam-name>
    18. <param-value>/WEB-INF/springmvc-servlet.xmlparam-value>
    19. init-param>
    20. <load-on-startup>1load-on-startup>
    21. <async-supported>trueasync-supported>
    22. servlet>
    23. <servlet-mapping>
    24. <servlet-name>SpringMVCservlet-name>
    25. <url-pattern>/url-pattern>
    26. servlet-mapping>
    27. web-app>

            wen.xml包含的内容:

    3.3.1SpringMVC与web容器的集成:Servlet ——>DispatherServlet

             3.4 补充的开发技巧:

    我们的配置文件在开发的过程中有很多,不可能所有的都放在resources中如下图:

     我们在这里是可以使用技巧,创建一个类似于中间连接的配置文件,然后通过这个文件来连接到对应的配置文件,然后我们在别的地方调用的时候直接调用这个汇总了的配置文件,它会自动的连接到对应的文件:

            applicationContext.xml:

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    5. xmlns:aop="http://www.springframework.org/schema/aop"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    7. <import resource="applicationContext-mybatis.xml">import>
    8. beans>

    二、简单初步实现SpringMVC开发

    我们用SpringMVC来初步试用一下跳转一个界面:

            ①创建一个Controller用来存放web层的方法和内容

    1. package com.zq.ssm.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. /**
    5. * @author张强
    6. * @site www.zq.com
    7. * @create  2022-08-17 0:10
    8. */
    9. //被Contorller标记的类 会交给Spring进行管理
    10. @Controller
    11. public class HelloController {
    12. // 自定义mvc:浏览器发送请求 http://localhost:8080/hello.action?methodName=hello
    13. // springmvc:浏览器发送请求 http://localhost:8080/helloReq
    14. @RequestMapping("/helloReq")
    15. public String hello(){
    16. System.out.println("helloe spreingMVC……");
    17. return "hello";
    18. }
    19. }

            ②创建一个前端页面用来做测试展示

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/8/16
    5. Time: 17:26
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    10. <html>
    11. <head>
    12. <title>Titletitle>
    13. head>
    14. <body>
    15. SpringMVC 你好
    16. ${msg}
    17. <hr>
    18. ${lst}
    19. <c:forEach items="${lst}" var="l">
    20. ${l.bid}:${l.bname}<hr>
    21. c:forEach>
    22. body>
    23. html>

    做完这两步,我们运行controller页面,然后我们在地址栏拼接上我们在controller中标记的@RequestMapping中的内容(/helloReq)即可实现页面跳转!

            ③补充知识:SpringMVC的返回值

            在SpringMVC中的返回方式有两个:

           3.1String

            String的返回方式默认为转发直接获取这段字符串然后通过本地资源视图解析器找到对应的页面无需后缀,但是我们在增删改的时候使用重定向的 只需在该字符串前加上redirect

            3.2ModelAndView

                    这种方式的话就是通过对象调用方法进行转发setViewName("跳转页面");也无需后缀。还可以带返回值参数:addObject("键","值");

    三、SpringMVC实现CRUD

            这里我们简单实现四个功能CRUD,页面美观度就不考虑了

            ①写一个controller

    BookControlle:

    1. package com.zq.ssm.controller;
    2. import com.zq.ssm.biz.BookBiz;
    3. import com.zq.ssm.model.Book;
    4. import com.zq.ssm.util.PageBean;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.PathVariable;
    8. import org.springframework.web.bind.annotation.RequestMapping;
    9. import javax.servlet.http.HttpServletRequest;
    10. import java.util.HashMap;
    11. import java.util.List;
    12. import java.util.Map;
    13. /**
    14. * @author张强
    15. * @site www.zq.com
    16. * @create  2022-08-17 11:49
    17. */
    18. @Controller
    19. @RequestMapping("/book")
    20. public class BookControlle{
    21. @Autowired
    22. private BookBiz bookbiz;
    23. @RequestMapping("/list")
    24. public String hello(HttpServletRequest req){
    25. System.out.println("helloe spreingMVC……");
    26. PageBean pagebean = new PageBean();
    27. pagebean.setRequest(req);
    28. Map map = new HashMap();
    29. String bname= req.getParameter("bname");
    30. map.put("bname",bname);
    31. List maps = this.bookbiz.listPager(map,pagebean);
    32. req.setAttribute("lst",maps);
    33. return "hello";
    34. }
    35. @RequestMapping("/add")
    36. public String add(Book book){
    37. this.bookbiz.insertSelective(book);
    38. return "redirect:/book/list";
    39. }
    40. @RequestMapping("/edit")
    41. public String edit(Book book){
    42. this.bookbiz.updateByPrimaryKey(book);
    43. return "redirect:/book/list";
    44. }
    45. @RequestMapping("/del/{bid}")
    46. public String del(@PathVariable("bid") Integer bid){
    47. this.bookbiz.deleteByPrimaryKey(bid);
    48. return "redirect:/book/list";
    49. }
    50. }

    这里就是四个方法,然后 对应的增删改在实现后重定向回到主界面(查询)

            ②写前端页面

    index.jsp(这里的增删改都是死数据,大家可以灵活一点改一下成为表单就可以了)

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/8/16
    5. Time: 21:52
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. head>
    13. <body>
    14. <a href="${pageContext.request.contextPath}/book/list?bname=圣墟">查询所有a>
    15. <a href="${pageContext.request.contextPath}/book/add?bid=2&bname=sb&price=9.9">增加a>
    16. <a href="${pageContext.request.contextPath}/book/edit?bid=2&bname=suibian&price=9.8">修改a>
    17. <a href="${pageContext.request.contextPath}/book/del/2">删除a>
    18. body>
    19. html>

    hello.jsp:(展示数据)

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: Administrator
    4. Date: 2022/8/16
    5. Time: 17:26
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    10. <html>
    11. <head>
    12. <title>Titletitle>
    13. head>
    14. <body>
    15. SpringMVC 你好
    16. ${msg}
    17. <hr>
    18. ${lst}
    19. <c:forEach items="${lst}" var="l">
    20. ${l.bid}:${l.bname}<hr>
    21. c:forEach>
    22. body>
    23. html>

  • 相关阅读:
    2022年高考都结束了,还有人真觉得程序员下班后不需要学习吗?
    Java IDE MyEclipse 使用教程:创建一个新的 REST Web 服务
    【ubuntu】中文输入法设置
    MySql进阶篇---006:存储引擎,索引,SQL优化,视图、存储过程、变量、流程控制、游标、存储函数、触发器
    静态变量及静态方法讲解
    Kubernetes基础(五)-Service
    python代码轻松下载youtube视频
    在OracleLinux8.6的Zabbix6.0中监控Oracle11gR2
    C#处理医学影像(四):基于Stitcher算法拼接人体全景脊柱骨骼影像
    删除链表中重复元素的问题
  • 原文地址:https://blog.csdn.net/weixin_66110079/article/details/126383444