一、SpringMVC前置知识

1 Tomcat安装部署

1.1 Tomcat简介

  • Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP,少量JavaEE规范。
  • JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
  • 因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。
  • Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。

1.2下载安装

选择合适版本,解压即安装完成,卸载删除解压文件即可

在这里插入图片描述
在这里插入图片描述

1.3 目录结构简介

解压后能看到如下目录结构

在这里插入图片描述

1.bin目录

存放一些可执行的二进制文件,.sh结尾的为linux下执行命令,.bat结尾的为windows下执行命令。

  1. conf目录

存放tomcat相关配置文件的。

  1. lib目录

存放tomcat依赖jar包的。其中ecj-x.x.x.jar起到了将.java文件编译成.class字节码文件的作用。

4. logs目录

存放tomcat运行时产生的日志文件。在windows环境中,日志文件输出到catalina.xxxx-xx-xx.log文件中。

在linux环境中,日志文件输出到catalina.out文件中。

5. temp目录

用户存放tomcat在运行过程中产生的临时文件(清空不会对tomcat运行带来影响)。

  1. webapps目录

用来存放应用程序,可以以文件夹、war包、jar包的形式发布应用。

默认自带以下5个项目:

在这里插入图片描述

  1. work目录

用于存放tomcat在运行时的编译后文件(清空该目录下所有内容,重启tomcat,可达到清除缓冲的作用)

1.4 启动

  • 执行 bin/startup.bat 启动tomcat
  • 启动后访问http://localhost:8080/可以看到欢迎页面,则启动成功。

在这里插入图片描述

1.5 可能出现的问题

1 若页面一闪而过,则可能是由于JAVA_HOME配置错误

2 Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml,可选端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误

在这里插入图片描述

在这里插入图片描述

3,若控制台启动信息乱码如下所示
在这里插入图片描述

可以通过一下方式解决,修改conf中logging.properties文件,将所有UTF-8改为GBK。

在这里插入图片描述

1.7 关闭

关闭有三种方式

  • 直接x掉运行窗口:强制关闭
  • bin\shutdown.bat:正常关闭
  • ctrl+c: 正常关闭

1.7 项目部署

  • 直接将资源文件放置到webapps下即部署完成。

  • 若将war包放置到webapp下可以自动完成解压,如将index.html打包成test.war,将其放到webapps目录下,自动生成test>index.html 可以通过http://localhost:8080/test/inext.html访问。

  • war包,后期我们会借助于IDEA工具来生成。

2 IDEA中构建javaweb项目

2.1 项目结构

开发中目录结构
在这里插入图片描述

发布后目录结构

在这里插入图片描述

2.2 项目构建

🔴方式一,使用骨架构建

具体的步骤包含:

  1. 创建Maven项目,选择使用Web项目骨架

  2. 删除pom.xml中多余内容

  3. 补齐Maven Web项目缺失的目录结构

第一步,创建Maven项目,选择骨架

在这里插入图片描述

第二步,删除pom.xml的多余内容,仅保留如下内容即可

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>demo1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

</project>

第三步, 补齐Maven Web项目缺失的目录结构

mian>右键>目录,会有提示

在这里插入图片描述在这里插入图片描述

🔴方式二,不使用骨架构建

具体的步骤包含:

1.创建普通Maven项目

2.在pom.xml设置打包方式为war

3.补齐Maven Web项目缺失webapp的目录结构,WEB-INF/web.xml的目录结构

第一步,创建普通Maven项目

第二步,在pom.xml设置打包方式为war

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>servletDemo2</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>war</packaging>
</project>

第三步, 补齐Maven Web项目缺失webapp的目录结构

在这里插入图片描述

若生成是位置不对,则移动到对应位置
在这里插入图片描述
最终目录结构如下:

在这里插入图片描述

2.3 配置Tomcat(方式一)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试第一步,webapp下新建test.html,运行程序在这里插入图片描述

测试第二步,访问该路径http://localhost:8080/demo2_war/test.html,可看到如下界面,则配置成功。

在这里插入图片描述

可以在此更改默认访问路径名称
在这里插入图片描述

2.4 配置Tomcat(方式二)

直接使用Maven中的Tomcat插件来部署项目,具体的实现步骤,只需要两步

第一步,在pom.xml中添加Tomcat插件

<build>
    <plugins>
    	<!--Tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>

第二步,启动
在这里插入图片描述

测试

访问http://localhost:8080/demo2/test.html,即可看到方式一同样的测试结果。

3 Servlet入门案例

Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet

3.1 导入坐标依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <!--
       provided指的是在编译和测试过程中有效
		最后生成的war包时不会加入
       	Tomcat的lib目录中已经有servlet-api这个jar包
		如果在生成war包的时候生效就会和Tomcat中的jar包冲突,导致报错
    -->
            <scope>provided</scope>
</dependency>

3.2 实现接口(方式一)

定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中打印一条语句,访问

http://localhost:8080/demo2_war/abc

package com.qlit.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo2")
public class servletTest implements Servlet {
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("调用了");
    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}

Servlet由web服务器创建,service方法由web服务器调用,因为我们自定义的Servlet必须实现Servlet接口并复写其方法,而Servlet接口中有service方法

3.3 继承类(方式二)

要想编写一个Servlet就必须要实现Servlet接口,重写接口中的5个方法,比较麻烦的,因为我们更关注的其实只有service方法

在这里插入图片描述

继承HttpServlet,该类对HTTP协议进行了封装,仅需要重写doGet与doPost方法,即可处理get与post请求

package com.yiwu.Servlet;

import javax.jws.WebService;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/abc")
public class ServletTest extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doget222-------");

    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("doPost-------");
    }

}

4 项目三层架构的概念

4.1 MVC设计模式

MVC是一种模式、思想,是一种软件设计规范。 针对BS结构的应用程序,将业务逻辑、数据、显示分离的方法来组织代码。将表现和逻辑解耦。

  • M(Model) 模型层: 应⽤程序的核⼼功能,用于处理应用程序数据逻辑以及与数据库交互。有两类bean

    • 一类称为数据承载 Bean:实体类,专门用户承载业务数据的,如 Student、User 等,
    • 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理用户提交请求的。(bean,dao);
  • V(View )视图层: 视图提供模型的展示,是应用程序中数据显示与提交的部分,管理模型如何显示给⽤户,它是应⽤程序的外观(jsp/html);

  • C(Controller)控制器: 将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。是连接模型和视图的枢纽。(servlet/service)
    在这里插入图片描述

4.2 JavaWEB三层架构

  • View层(表现层):接收请求,封装数据,调用业务逻辑层,响应数据
  • Service 层(业务逻辑层):对业务逻辑进行封装
  • dao层(数据访问层):对数据库的操作代码

JSP开发模式发展史

  1. 纯Servlet开发

    Servlet是Java技术中最早的Web解决方案,Servlet与普通Java类的编写类似。在Servlet中可以通过输出Html等语句来实现页面的样式,实现了数据的动态功能。表现、逻辑、控制、业务全部混在Servlet类中。

在这里插入图片描述

  1. JSP(纯JSP开发)——也叫model1第一代

    为了解决纯Servlet开发的弊端,Sun公司又推出了JSP(Java Server Page),JSP中采用HTML语言直接生成界面,还可以在界面中使用<% %>脚本标识嵌入Java代码,其本质也是最终生成一个Servlet类来编译解析。

  2. JSP+JavaBean(Model1第二代)

    JavaBean 是一种JAVA语言写成的可重用组件。实际上就是作为和数据库交互的Java类,Jsp页面里边编写部分Java代码用于转发等操作以及HTML页面的生成代码,而获取数据的方式以及业务逻辑(这里的业务逻辑就是非请求转发部分的代码)则通过JavaBean来实现。

在这里插入图片描述

​ JSP:表现层、控制层; JavaBean:模型层 利用我们现在熟悉的MVC模型的思想去看,虽然编写代码十分容易,但Jsp混淆了MVC模型中的视图层和控制层, 高度耦合的结果是Jsp代码十分复杂,后期维护依旧困难。

  1. servlet+JSP+JavaBean(Model2)

Model1第二代虽然在一定程度上解耦了,但JSP依旧即要负责页面控制,又要负责逻辑处理,职责不单一!Model2基于MVC模式,增加了Servlet,使得各个部分各司其职。

在这种开发模式下,JSP页面中就可以不用任何的<%%>语句了,包括<%=%>全部用EL表达式来代替, JSP中不涉及任何的业务逻辑,前端人员修改样式也十分方便。这里可以理解为JSP为MVC设计模式中的V,即视图。控制层通过Servlet来实现,获取前台传的参数、控制页面跳转,封装对象、向前台传输对象或者参数。并且可以由自己设计,设法用一个Servlet类实现该模块的所有功能的页面跳转。这里可以理解为Servlet为MVC设计模式中的C,即控制器。
在这里插入图片描述

但Model2并不是一个完全标准的MVC设计模式,因为JavaBean还过于臃肿,并不能完全作为M层存在,所以将JavaBean中的封装业务功能再一次进行分割:业务逻辑、数据持久化。

  1. 目前的三层架构
    在这里插入图片描述

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程,这就实现了层间解耦合。

  • 即上层对下层的调用,是通过接口实现的。
  • 下层对上层的真正服务提供者,是下层接口的实现类。
  • 服务标准(接口)是相同的,服务提供者(实现类)可以更换。

4.3 SSM与三层架构的关系

SpringMVC、Spring 与 MyBatis ,在三层架构中位置不同,功能不相同,各司其职。

  • SpringMVC:View 层的实现者,完成用户的请求接收功能。SpringMVC 的 Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。
  • MyBatis:Dao 层的实现者,完成对数据库的增、删、改、查功能。
  • Spring:以整个应用大管家的身份出现。整个应用中所有 Bean 的生命周期行为,均由Spring 来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由 Spring 进行管理。

4.4 分层开发目录结构

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring MVCSpring 框架中的一个重要模块,用于构建 Web 应用程序。在深入学习 Spring MVC 前,您需要了解一些基础知识: 1. **Java Web开发基础**: - Servlets和JSP:这是 Java Web 开发的入门技术,用于处理 HTTP 请求和响应。 - MVC(Model-View-Controller)模式:这是一种架构设计模式,将应用程序分为三个部分:模型(数据),视图(展示),和控制器(处理请求和转发视图)。 2. **Spring框架**: - Spring核心组件:IoC(依赖注入)、AOP(面向切面编程)是Spring的重要概念。 - Spring配置:XML或注解配置(如@Component、@Service、@Controller等)用于定义 Bean 和配置它们之间的关系。 3. **Java注解**: - @Autowired:用于自动装配对象。 - @Controller、@RequestMapping、@GetMapping/POST等:标记控制器类和方法,用于路由HTTP请求。 4. **HTTP方法**: - GET、POST、PUT、DELETE等,理解这些方法的用途对处理HTTP请求至关重要。 5. **MVC框架原理**: - Spring MVC 的请求流程:控制器接收请求,调用业务逻辑(Model),然后根据逻辑结果返回响应给视图(View)。 6. **Spring MVC 中的数据绑定和验证**: - 如何使用 Model 对象绑定到前端表单,以及验证工具如 `@Valid` 和 `Validator` 接口。 相关问题: 1. Spring MVC 的控制器是如何工作的? 2. 数据绑定在Spring MVC中的具体实现是什么? 3. 如何在Spring MVC中自定义拦截器进行权限控制?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老去的90后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值