• SpringMVC入门


    目录

    一,SpringMvc简介及配置

    1.什么是SpringMVC?

     2. SpringMVC处理请求的流程

     3. SpringMVC核心开发步骤

    4. SpringMVC的组件

     5. 如何在项目中添加springmvc

    二,Spring之helloWord实现

    三,Spring常用注解及返回值处理

    四,Spring静态资源处理


    一,SpringMvc简介及配置

    1.什么是SpringMVC?

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

    SpringMVC

    1.视图层框架:SpringMVC部分功能时想用户渲染展示数据

    2.控制层框架DispatcherServlet:接受浏览器端的任意请求,然后寻找对应的子控制器(适配器*Adapter)处理浏览器请求

     2. SpringMVC处理请求的流程

              2.1 首先用户发送请求-->DispatherServlet

              2.2 DispatcherServlet-->HandlerMapping

              2.3 DispatcherServlet-->HandlerAdapter

              2.4 HandlerAdapter-->处理器功能处理方法的调用

              2.5 ModelAndView的逻辑视图名-->ViewRecolver

              2.6 View-->渲染

              2.7 返回控制权给DispatcherServlet,由DispatcherServlet返回呼应给用户,流程结束

     3. SpringMVC核心开发步骤

              3.1 DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC

              3.2 HandlerMapping的配置,从而将请求映射到处理器

              3.3 HandlerAdapter的配置,从而支持多种类型的处理器

              3.4 处理器(页面控制器)的配置,从而刊行功能处理

              3.5 ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术

    4. SpringMVC的组件

              4.1 前端控制器(DispatcherServlet)

              4.2 请求到处理器映射(HandlerMapping)

              4.3 处理器适配器(HandlerAdapter)

              4.4 视图解析器(ViewResolver)

              4.5 处理器或页面控制器(Controller)

              4.6 验证器(Validator)

              4.6 命令对象(Command 请求参数绑定到的对象就叫命令对象)

              4.7 表单对象(Form Object提供给表单展示和提交到的对象就叫表单对象)

     5. 如何在项目中添加springmvc

    首先添加相关依赖

    在pom.xml中加上以下代码依赖

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

    报错处理:

    缺少下面的这两个jar包会报java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

          原因:org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包

    所以以下jar包依赖也必须同时加上

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

    Spring-mvc.xml

            1.扫描base-packge

                    定义base-package

                    开启注解扫描

                    开启动态代理

            2.配置视图解析器

                    本地资源视图解析器:InternalResourceViewResolver

                    多功能视图解析器

            3.做静态资源映射

    其次在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.javaxl.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>
    解析:
    
    

    prefix:前缀

    suffix:后缀

     SpringMVC不需要做Spring.xml的配置

    prefix+返回值+suffix=跳转页面

    最后还要将web.xml文件进行修改

    1. "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/spring-mvc.xmlparam-value>
    19. init-param>
    20. <load-on-startup>1load-on-startup>
    21. <async-supported>trueasync-supported>
    22. <servlet-mapping>
    23. <servlet-name>SpringMVCservlet-name>
    24. <url-pattern>/url-pattern>
    25. servlet-mapping>

    随着后续的学习,框架会越来越多,不能讲所有的框架配置放在同一个配置间中,否则不便于管理

    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>

     

     web.xml

            Spring与web容器的集成:监听器

            SpringMVC与web容器的集成:servlet-----dis

    二,Spring之helloWord实现

    步骤:

            1.pom依赖

            2.springmvc.xml

            3.web.xml

            4.开发 

                    @controller

                    @RequestMapping

    二.springmvc的工作原理

            1.浏览器发送请求到中央控制器DispatcherServlet

            2.到中央控制器DispatcherServlet通过处理器映射器HandlerMapping找到处理器适配器HandlerAdapter

            3.执行HandlerAdapter

            4.视图解析器会对 返回值ModelAndView进行渲染,得到view视图对象

            5.最后DispatcherServlet会进行view视图对象返回给用户

    首先建一个类

    1. package com.dengxiyan.ssm.controller;
    2. import org.springframework.stereotype.Component;
    3. import org.springframework.stereotype.Controller;
    4. import org.springframework.stereotype.Repository;
    5. import org.springframework.stereotype.Service;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.servlet.ModelAndView;
    8. /**
    9. * @author dxy
    10. * @site www.javadxy.com
    11. * @company ds公司
    12. * @create  2022-08-16 21:55
    13. */
    14. //被Controller标记的类会交个他Spring进行管理
    15. /*@Controller
    16. @Service
    17. @Repository*/
    18. @Component
    19. //以上注解都代表当前类交给Spring容器进行管理
    20. public class HelloController {
    21. //以下代码是hello2的简写版
    22. @RequestMapping("/helloReq")
    23. public String hello(){
    24. System.out.println("hello mvc....");
    25. return "hello";
    26. }
    27. @RequestMapping("/hello2")
    28. public String hello2(){
    29. ModelAndView mv = new ModelAndView();
    30. mv.setViewName("holle2");
    31. mv.addObject("msg","success...");
    32. System.out.println("hello mvc....");
    33. return "mv";
    34. }
    35. }

    解析:

    @controller:表示交给Spring容器进行管理(@Controller @Service @Repository这些注解也一样)

    @RequestMapping:浏览器发送请求(相当于http://localhost....)

    jsp页面

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: zjjt
    4. Date: 2022/8/17
    5. Time: 11:28
    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=aa&price=9.9">新增a>
    16. <a href="${pageContext.request.contextPath}/book/edit?bid=2&bname=bb&price=9">修改a>
    17. <a href="${pageContext.request.contextPath}/book/del/2">删除a>
    18. <img src="${pageContext.request.contextPath}/static/images/"/>
    19. body>
    20. html>

    《效果图》

     

     

    三,Spring常用注解及返回值处理

    通过crud进行讲解

    Controller

    Requestmapping

    Requestparam

    传参

    常用注解

    @controller

    @requesMapping代表以下四个注解

           查询方法: @GetMapping

            修改方法:@postMapping

           删除: @DeleteMapping

            修改:@PutMapping

    @PathVarible

    @autowiesed

    返回值处理:

    String

    ModelAndView(代表参数)

    转发与重定向的设置

            “”hello“转发到/hello.jsp

    "redirect://hello"转发.../项目名/hello

    《代码演示》 

    1. package com.dengxiyan.ssm.controller;
    2. import com.dengxiyan.ssm.Biz.BookBiz;
    3. import com.dengxiyan.ssm.model.Book;
    4. import com.dengxiyan.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 org.springframework.web.bind.annotation.RequestMethod;
    10. import javax.servlet.http.HttpServletRequest;
    11. import java.util.HashMap;
    12. import java.util.List;
    13. import java.util.Map;
    14. /**
    15. * @author dxy
    16. * @site www.javadxy.com
    17. * @company ds公司
    18. * @create  2022-08-17 9:26
    19. *
    20. * @RequestMapping加在类上面,称榨化路径,就相当于包的概念
    21. */
    22. @Controller
    23. @RequestMapping("/book")
    24. public class BookController {
    25. @Autowired
    26. private BookBiz bookBiz;
    27. @RequestMapping(value = "/list",method = RequestMethod.GET)
    28. public String hello(HttpServletRequest req) {
    29. System.out.println("hello mvc....");
    30. PageBean pageBean = new PageBean();
    31. pageBean.setRequest(req);
    32. Map map = new HashMap();
    33. String bname = req.getParameter("bname");
    34. map.put("bname",bname);
    35. List<Map> maps = this.bookBiz.listPager(map, pageBean);
    36. req.setAttribute("lst",map);
    37. return "holle";
    38. }
    39. @RequestMapping("/add")
    40. public String add(Book book){
    41. this.bookBiz.insert(book);
    42. return "redirect:/book/list";
    43. }
    44. @RequestMapping("/del{bid}")
    45. //利用注解将参数放入方法里@PathVariable路径传参
    46. public String del(@PathVariable("bid") Integer bid){
    47. this.bookBiz.deleteByPrimaryKey(bid);
    48. return "redirect:/book/list";
    49. }
    50. @RequestMapping("/edit")
    51. public String edti(Book book){
    52. this.bookBiz.insertSelective(book);
    53. return "redirect:/book/list";
    54. }
    55. }

    《效果图》

     

    四,Spring静态资源处理

    三大静态资源:
    
    
    
    
    写一个就够了
    
    
  • 相关阅读:
    记录造数据测试接口
    CTF比赛必备常用工具
    软件为什么单独标注支持IPV6?IPV6和IPV4有什么区别?
    PHP学习笔记(一往无前)
    PHP WebShell 免杀
    HTTPS一定安全吗
    ZYNQ上的简单 FSK 基带发射器
    CGLIB 动态代理使用
    Eigen库的配置方法
    L6.linux命令每日一练 -- 第二章 文件和目录操作命令 -- touch和ls命令
  • 原文地址:https://blog.csdn.net/weixin_66202611/article/details/126371721