springmvc介绍(代码片段)

小布丁value 小布丁value     2022-12-20     363

关键词:

SpringMVC介绍

SpringMVC是属于是spring中web模块的支持一部分
实现的了WEB MVC的设计模式,进行web层的职责解耦
请求驱动类型的web框架:请求-响应的模型

SpringMVC的运行原理


组件:
前端控制器:控制中心,组件间解耦合(无需开发/配置即可)
处理器映射器:匹配URL是否存在(无需开发/配置即可)
处理器适配器:适配查找具体处理器(无需开发/配置即可)
处理器:不同URL处理逻辑不同(需要开发 后端java)
视图解析器:查找View实例对象(无需开发/配置即可)
视图:web页面(jsp、freemark、pdf等类型视图)(需要开发/网页)

SpringMVC的使用

web项目需要放在容器里执行(Tomcat/jetty)本文用的是jetty

1、依赖jar包

springMVC中web依赖:

        <!--web依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        
    <!--Spring 基本核心jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <!--log4j日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--注解相关jar包-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>        

2、在web.xml中配置前端控制器

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!--配置前端控制器-->
    <servlet>
        <servlet-name>springmvc-gysx</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc-gysx</servlet-name>
        <url-pattern>/</url-pattern>
        <!--http://www.baidu.com/index-->
    </servlet-mapping>
</web-app>

注意:前端控制器需要使用org.springframework.web.servlet.DispatcherServlet会拦截指定格式的URL到DispatcherServlet

3、创建SpringMVC的配置文件

创建一个spring-mvc.xml文件,放在资源文件路径下resource下,配置映射器,适配器和解析器

<?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 http://www.springframework.org/schema/context/spring-context-4.1.xsd

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

    <!--配置SpringMVC的需要扫描的包路径-->
    <context:component-scan base-package="com.tulun.gysx.controller"/>
    
    <!--配置映射器、适配器:使用默认的处理器处理,不用显性配置映射器、适配器-->
    <mvc:annotation-driven/>
    
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

</beans>

注意:将spring-mvc.xml配置文件加载到web.xml配置文件中,方便加载

        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>

4、编写controller层

@Controller
public class TestController 

    @RequestMapping("/gysx")
    public String gysx() 
        //返回页面
        return "index.jsp";
    

5、编写jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>success</title>
        </head>
        <body>
        <h1>你好,同学们!</h1>
        </body>
        </html>

日志分析

1、日志依赖

        <!--log4j日志文件-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

2、日志配置文件

创建log4j.properties文件

## debug 级别  

log4j.rootLogger=DEBUG,Console  

log4j.appender.Console=org.apache.log4j.ConsoleAppender  

log4j.appender.Console.Target=System.out  

log4j.appender.Console.layout = org.apache.log4j.PatternLayout  

log4j.appender.Console.layout.ConversionPattern=%dyyyy-MM-dd-HH\\:mm\\:ss,SSS [%t]  [%c] [%p] - %m%n  

log4j.logger.com.mybatis=DEBUG  /  



##输出sql 语句  

log4j.logger.java.sql.Connection=DEBUG  

log4j.logger.java.sql.Statement=DEBUG  

log4j.logger.java.sql.PreparedStatement=DEBUG 

3、日志打印

  2021-07-02-10:31:27,929 [main]  [org.apache.ibatis.transaction.jdbc.JdbcTransaction] [DEBUG] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@dc24521]
  2021-07-02-10:31:27,931 [main]  [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==>  Preparing: select * from student where SID = ? 
  2021-07-02-10:31:28,036 [main]  [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==> Parameters: 3(Integer)
  2021-07-02-10:31:28,196 [main]  [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - <==      Total: 1
  "SID":3,"Sname":"sunfen","Ssex":"nan","Sage":21

数据插入示例

insert into student (XXX) values():

mapper.java接口文件

    //插入数据
    int insertStudent(Student student);

mapper.xml文件

    <!--插入数据-->
    <insert id="insertStudent" parameterType="com.tulun.bean.StudentGY">
        insert into student (SID,Sname,Sage,Ssex) values (#SID,#Sname,#Sage,#Ssex)
    </insert>

执行代码:

        //指定mybatis的全局配置文件
        String fileName= "mybatis-config.xml";
        //通过流的形式来读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(fileName);
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //获取会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过动态代理获取一个代理对象
        StudentMapperGY studentMapperGY = sqlSession.getMapper(StudentMapperGY.class);

//        插入操作
        StudentGY studentGY = new StudentGY();
        studentGY.setSID(21);
        studentGY.setSname("GYSX");
        studentGY.setSage(21);
        studentGY.setSsex("nan");
        studentMapperGY.insertStudent(studentGY);
        sqlSession.commit();

删除数据示例

mapper.java接口文件

    //删除数据
    int delStudentById(Integer id);

mapper.xml配置文件

    <!--删除数据-->
    <delete id="delStudentById" parameterType="int">
        delete from student where SID = #id
    </delete>

修改数据示例

mapper.java接口文件

   //修改数据
    int updateNameById(StudentGY studentGY);

mapper.xml配置文件

    <!--修改数据-->
    <update id="updateNameById"  parameterType="com.tulun.bean.StudentGY">
        update student set Sname = #Sname where SID = #SID
    </update>

springmvc--springmvc介绍快速入门快速入门流程(代码片段)

1.SpringMVC介绍SpringMVC是三层架构(视图层、服务层、持久层)中的视图层框架。SpringMVC是Spring的一个后续产品,是Spring的一个子项目2.快速入门2.1需求客户端发起请求,服务器端接收请求,执行逻辑并进行视图... 查看详情

springmvc的执行流程及组件介绍(代码片段)

UserController.javasuccess.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head>&l 查看详情

springmvc介绍及基本应用(代码片段)

SpringMVC介绍及基本应用1、SpringMVC简介1.1、MVC体系结构三层架构我们的开发架构⼀般都是基于两种形式,⼀种是C/S架构,也就是客户端/服务器;另⼀种是B/S架构,也就是浏览器/服务器。在JavaEE开发中,⼏乎全... 查看详情

springmvc介绍及基本应用(代码片段)

SpringMVC介绍及基本应用1、SpringMVC简介1.1、MVC体系结构三层架构我们的开发架构⼀般都是基于两种形式,⼀种是C/S架构,也就是客户端/服务器;另⼀种是B/S架构,也就是浏览器/服务器。在JavaEE开发中,⼏乎全... 查看详情

springmvc整体结构介绍,图文+代码(代码片段)

SpringMVC是Spring提供的构建Web应用程序的框架,该框架遵循了Servlet规范,负责接收并处理Servelt容器传递的请求,并将响应写回Response。SpringMVC以DispatcherServlet为核心,众多组件如HandlerMapping为辅助,为用户封装了... 查看详情

springmvc介绍。(代码片段)

目录1、SpringMvc概述1、基本介绍2、工作流程 3、bean加载控制 二、请求1、请求映射路径2、请求方式3、请求参数4、请求参数(传递json数据)5、日期类型参数传递三、响应四、REST风格1、REST简介2、RESTful入门案例3、RESTful... 查看详情

springmvc--验证器(代码片段)

输入验证是Spring处理的最重要Web开发任务之一。在SpringMVC中,有两种方式可以验证输入,即利用Spring自带的验证框架,或者利用JSR303实现。本篇博客将介绍这两种输入验证方法。本篇博客用两个不同的示例分别介绍这两种方式:... 查看详情

springmvc学习笔记(代码片段)

文章目录概述和设计模式介绍@Controller@RequestMapping@ResponseBody控制器方法的返回String返回类型返回普通的Java类型返回ResponseEntity控制器方法支持的参数类型@PathVariable@RequestParamPOJO对象@RequestBody@RequestPartSpringM 查看详情

springmvc学习笔记(代码片段)

文章目录概述和设计模式介绍@Controller@RequestMapping@ResponseBody控制器方法的返回String返回类型返回普通的Java类型返回ResponseEntity控制器方法支持的参数类型@PathVariable@RequestParamPOJO对象@RequestBody@RequestPartSpringM 查看详情

springmvc常见面试题(代码片段)

1.什么是SpringMVC?简单介绍下你对springMVC的理解?  SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简... 查看详情

ssm框架整合—详细整合教程(spring+springmvc+mybatis)(代码片段)

SSM框架整合—详细整合教程(Spring+SpringMVC+MyBatis)✨博主介绍MyBatis和Spring整合1、整合原因2、整合条件3、整合入门4、整合MyBatis现有配置SpringMVC和Spring整合1、整合理论2、整合实战💫点击直接资料领取💫✨... 查看详情

springmvc拦截器详解(代码片段)

...框架必备的功能,也是个老生常谈的主题了。本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理。重要接口及类介绍1. HandlerExecutionChain类  由HandlerMethod和Interceptor集合组成的类,会被HandlerMapping... 查看详情

加薪必备,springmvc精品面试题(这必须收藏啊!)(代码片段)

前言本文围绕以下“六”个模块详细的讲述了SpringMVC的常见面试题及答案!面试题目录前言SpringMVC概述什么是SpringMVC?简单介绍下你对SpringMVC的理解?SpringMVC的优点SpringMVC核心组件SpringMVC的主要组件?什么是Dispatc... 查看详情

数据绑定流程分析(代码片段)

一:介绍1.介绍  SpringMVC框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象。  DataBinder调用装配在SpringMVC上下文中的ConversionService组件,进行数据类型转换,数据格式化工作。... 查看详情

springmvc解析编程式路由(代码片段)

多数情况下,我们在使用Spring的Controller时,会使用@RequestMapping的形式把请求按照URL路由到指定方法上。Spring还提供了一种编程的方式去实现请求和路由方法之间的路由关系,这种关系在Spring启动时确定,运行过程中不可变。编... 查看详情

idea插件系列(64):documentassistant插件——springmvc文档助手(代码片段)

1.插件介绍DocumentAssistant插件。文档助手是基于SpringMVC代码动态生成markdown文档的插件,通过文档助手简单的通过代码注释、SpringMVC的基础注解实现HTTPAPI的文档生成。1、通过动态分析项目应用配置文件以及注解配置生成其URI... 查看详情

在web项目中搭建一个springmvc+spring+mybatis的环境(代码片段)

...中会自动请求jsp中指定的接口,请求到达comcat服务器后由springmvc提供的DispatchServlet类进行接受,然后将请求交给HandierMapping接口的 查看详情

javaweb学习之springmvc视图解析器的分析(代码片段)

在这篇博客中将接着介绍一下SpringMVC视图解析器。当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的所有请求映射中存在对该请求的最合理的... 查看详情