前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习springMVC(一)为什么要学习springMVC,实现基本使用流程(看不懂你打我)

深度学习springMVC(一)为什么要学习springMVC,实现基本使用流程(看不懂你打我)

作者头像
一写代码就开心
发布2021-07-08 15:07:23
4880
发布2021-07-08 15:07:23
举报
文章被收录于专栏:java和pythonjava和pythonjava和python

目录

回顾

之前我们使用spring 和 mybatis就可以实现项目的开发,他的流程是

①  创建web项目

② 导入jar包

	a.Spring的jar
	b.mybatis的jar
	c.spring整合mybatis的jar
	d.jdbc的jar
	e.json的jar

③ 在src下创建mvc的包结构

a.在pojo包下将实体类创建完毕
b.在mapper层下将相关的数据库操作声明

④ 在src下创建并配置applicationconext.xml

a.属性配置文件扫描(db.properties)
b.注解扫描(com.bjsxt.service.impl)
c.数据源的bean
d.工厂的bean
e.mapper扫描的bean(工厂走属性注入)
f.配置事务管理bean
g.配置事务管理方法
h.配置事务管理切面

⑤ 在web-inf下配置web.xml文件

a.配置Spring配置文件的路径
b.配置Spring的监听器

⑥ 完成功能开发

⑦ 流程:前台+后台+数据库

原来开发项目所存在的问题

在学习了Spring之后,基于MVC设计模式的项目,我们可以使用Mybatis将数据库替换,使用Spring将Controller层和Service层,以及Service层和数据库层之间进行解耦。但是基于MVC的模式中,在Controller层中的Servlet为请求的代码入口。tomcat服务器在接受到请求后,会根据请求地址自定调用对应的servlet的service方法完成请求处理,但是此流程存在如下问题:

①每个功能都要声明对应的Servlet,麻烦。
②在Servlet中获取请求数据比较麻烦。前段传过来的数据字段比较的多,咋办
③响应的方式的代码其实只想声明对应的响应数据。

没有spring MVC的时候,controller层是这样书写

学习springMVC之前,控制层写法,结合spring容器

解决:

优化servlet

我们的项目里面的代码里面必须有一个servlet,因为我们的项目要交给Tomcat,这个Tomcat只认识servlet,其他的Tomcat不认识。servlet之前的作用是入口和数据的处理,现在我们要改一下,这个servlet只是作为入口,只是一个中转站,不做处理,只是做分发。

之前我们写一个方法,就得改一下service()方法里面的判断,也就是得增加一个方法的判断,之后调用我们自己写的方法,这样太麻烦了,因为我们每写一个方法,都要在service()方法里面增加一个判断。代码冗余。

现在就要将service()方法里面的部分动态实现,利用反射,以后我们只管写我们的方法就可以了。不用管service()里面的判断了,这个就是springmvc框架实现的。

实现

springmvc框架已经帮我们实现了公共的servlet,我们只需要把他拿过来,放到我们的项目里面,然后按照springmvc框架的官方说明,写配套的方法,写配套的spring容器的配置。

本质:

就是将Servlet进行了封装,提供一个公共的Servlet。该Servlet可以根据请求动态的调用对应的逻辑方法完成请求处理。

我们不需要自己写servlet了,只需要用springmvc框架配置一下就可以了,以后我们就专心写自己的方法就可以了

解释:以前的controller层,我们要写servlet和对应的处理方法,现在有了springmvc框架,我们只需要配置一下servlet,就不用管了,以后安心写自己的处理方法就可以了。

使用

因为要使用springmvc框架,所以首先是导入jar包。

①导入SpringMVC的相关jar

②在web.xml中配置Servlet

a.Servlet的访问路径
b.配置SpringMVC容器对象的配置文件路径

③在src下创建并配置SpringMVC配置文件

a.配置注解扫描路径
配置SpringMVC的驱动解析器。

书写代码

创建项目架构

1 首先创建一个web项目

自己选择一个空文件夹,自己随便选择就可以了,我的是放在这个Java文件夹下

选择这个窗口打开,或者新窗口打开,都可以

以上的步骤只是创建了一个空项目,现在我们开始创建项目

导入jar包

在src下创建MVC的包结构

以前的话,我们自己再controller层开始写servlet了,但是现在因为有springmvc框架了,我们不需要自己写了,只需要配置一下就可以了。

配置web.xml文件,配置SpringMVC的Servlet

以下就是配置了springmvc的servlet,我们的项目里面已经有servlet了

   <!--配置SpringMVC的Servlet-->
    <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置SpringMVC容器对象的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup><!--服务器启动即完成初始化创建-->
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern><!--拦截除jsp请求以外的所有请求-->
    </servlet-mapping>

我们要自己写一个springmvc.xml,当项目一启动,就需要把controller的类放到容器对象里面,我们浏览器访问的时候,只需要从spring容器里面拿对应的controller对象就可以了,所以在web.xml里面,servlet的初始化 <init-param>标签里面,就需要将controller层的对象变为bean对象,放到spring容器里面。

所以接下来,我们创建springmvc.xml,里面写对应的资源,也就是在这个xml里面将controller类都变为bean对象,放到容器里面。

以前我们是需要在xml里面自己写bean标签,把我们想要变为bean标签的类的路径写到这个xml里面,后来使用了注解,不需要在这个xml里面写那么多的bean标签了,只需要写一个注解扫描的路径就可以了。

<?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.xsd
         http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
    <!--配置注解扫描:让SpringMVC容器对象扫描controller层,
    将Controller层使用注解声明的控制器类对象扫描到
    SpringMVC的容器对象中-->
        <context:component-scan base-package="com.controller"></context:component-scan>
    <!--配置SpringMVC的注解解析器:告诉SpringMVC的容器对象,
    将其自己的注解配置的对象也扫描到容器中使用-->

写了这个的意思:  将springmvc框架自己配置的bean对象也扫描进来

        <mvc:annotation-driven></mvc:annotation-driven>

</beans>

接下来就是在controller层写自己的代码了

自己写的类,只要一加@Controller,那么这个类已经在spring容器里面,成为bean对象了。

/**
 * 控制器类
 */
@Controller
public class MyController {

 
}

这个类里面写一个方法,里面就是我们自己的逻辑,但是浏览器是咋知道我们要调用这个方法的,springmvc框架给了我们一个注解 @RequestMapping()

这个里面起一个别名,那么浏览器只要一走这个别名,那么就会调用这个方法

/**
 * 控制器类
 */
@Controller
public class MyController {

    //声明请求处理的逻辑方法(单元方法)
    @RequestMapping("dd")
    public String demo(){
        System.out.println("我是处理请求的逻辑单元方法,由DispatcherServlet根据请求调用");
        return "aa";
    }


}

以上就是全部的步骤,对servlet优化的步骤

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 回顾
  • 原来开发项目所存在的问题
  • 解决:
  • 实现
  • 本质:
  • 使用
  • 书写代码
    • 创建项目架构
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档