SpringMVC学习01之回顾Servlet

前言

ssm : mybatis + Spring + SpringMVC MVC三层架构
前提:
JavaSE:认真学习
JavaWeb:认真学习
后期如何学习:
SSM框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力
SpringMVC + Vue + SpringBoot + SpringCloud + Linux
今天我们只学习ssm框架中的最后一个:SpringMVC

一、回顾MVC是什么?

  • MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
  • 是将业务逻辑、数据、显示分离的方法来组织代码。
  • MVC主要作用是降低了视图与业务逻辑间的双向偶合。
  • MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

SSM = JavaWeb做项目;
Mybatis:数据库操作,底层操作
Spring : IOC和AOP
SpringMVC: SpringMVC的执行流程!SpringMVC : SSM框架整合!

二、使用步骤

1.准备的环境

(1)新建一个Maven工程当做父工程!pom依赖!

<dependencies>
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.1.9.RELEASE</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet.jsp</groupId>
       <artifactId>jsp-api</artifactId>
       <version>2.2</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
   </dependency>
</dependencies>

(2)添加Web app的支持!
(3)导入servlet 和 jsp 的 jar 依赖

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version>
</dependency>
<dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>jsp-api</artifactId>
   <version>2.2</version>
</dependency>

2.编写代码

编写一个Servlet类,用来处理用户的请求

package com.shan.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String method = req.getParameter("method");

        if (method.equals("登录")){
            if (username.equals("zxs")&&password.equals("111")){
                req.getSession().setAttribute("msg","登录成功");
                req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
            }else {
                req.getSession().setAttribute("msg","密码不正确或帐户名不正确");
                req.getRequestDispatcher("index.jsp").forward(req,resp);
            }
        }else if (method.equals("注册")){
            req.getSession().setAttribute("msg","进入到注册页面");
            req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
        }

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

欢迎页index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>系统</title>
  </head>
  <body>
  <form method="get" action="/hs">
    帐户 : <input type="text" name="username"><br>
    密码 : <input type="password" name="password"><br>
    <input type="submit" name="method" value="登录" >&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="submit" name="method" value="注册">
  </form>
  <p style="color: red"> ${msg} </p>
  </body>
</html>

在web-inf下创建一个jsp目录,在jsp里面创建要跳转到的hello.jsp这个页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>servlet</title>
</head>
<body>
${msg}
</body>
</html>

在web.xml中注册Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.shan.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hs</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

配置Tomcat,并启动测试
localhost:8080

3.测试

在这里插入图片描述
在这里进行一个方法判断,如果你点击了登录就会进行登录判断,若帐户和密码不正确则会显示密码不正确或帐户名不正确
在这里插入图片描述
如果你点击了注册按钮则会跳转到注册页面(这里注册功能没有实现,由于是回顾Servlet,不需要数据库,也没去实现注册功能)
在这里插入图片描述
如果帐户密码正确则登陆成功
在这里插入图片描述

作者有话说

博客创作不易,希望看到这里的读者动动你的小手点个赞,如果喜欢的小伙伴可以一键三连,作者大大在这里给大家谢谢了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring MVC的Interceptor对Servlet生效。 Spring MVC是基于Servlet API构建的框架,它的核心DispatcherServlet实际上是一个Servlet。在DispatcherServlet处理请求之前,会先执行拦截器链,而拦截器链中的拦截器就是Spring MVC的Interceptor。Interceptor可以在请求到达Controller之前或返回响应之前执行一些操作,如身份认证、日志记录等,因此它们可以影响到整个请求的处理过程。由于Spring MVC是基于Servlet API构建的,Interceptor自然也可以对Servlet生效。 ### 回答2: Spring MVC的Interceptor只对Spring MVC的请求生效,并不直接对Servlet生效。 Interceptor是Spring MVC框架中的一种机制,用于拦截处理请求并在处理请求之前或之后执行一些操作。它通过实现HandlerInterceptor接口来定义拦截逻辑,并且可以在Spring MVC配置文件中配置拦截器。 正常情况下,当一个请求进入Spring MVC的DispatcherServlet时,DispatcherServlet会根据请求的URL找到对应的处理器(Controller)以及要执行的方法,并在执行方法前后调用拦截器的相应方法。这意味着Interceptor只对由DispatcherServlet处理的请求生效。 而Servlet是JavaWeb开发中的一种基本组件,它通过处理HTTP请求来生成响应。Servlet可以独立于Spring MVC框架使用,通过定义Servlet来处理请求,无需经过Spring MVC拦截器的干预。 所以,虽然有时候Spring MVC框架会使用Servlet来处理请求,但是Interceptor并不直接对Servlet生效,而是针对Spring MVC处理的请求进行拦截和处理。 ### 回答3: Spring MVC的Interceptor对Servlet生效。 Spring MVC的Interceptor是一种拦截器,可以在处理请求的过程中进行拦截和处理。它可以用来对请求进行预处理和后处理。拦截器在请求进入Controller之前被调用,可以对请求的参数进行处理和验证,也可以在请求结束后进行后置处理。 在Spring MVC中,拦截器是通过实现HandlerInterceptor接口来实现的。在配置文件中可以配置多个拦截器,并指定它们的顺序。当有请求进入时,拦截器会按照配置的顺序依次进行拦截和处理,直到最后一个拦截器完成处理或者有拦截器中断了请求。 拦截器对Servlet生效是因为Spring MVC底层使用的是Servlet容器(如Tomcat)来处理请求。当有请求进入Servlet容器时,Servlet容器会根据配置将请求转发给DispatcherServlet,然后DispatcherServlet会根据请求的URL和映射关系找到对应的Controller进行处理。在这个过程中,拦截器会被调用并拦截请求。 所以,Spring MVC的Interceptor对Servlet生效,可以在请求进入和离开Controller之前对请求进行处理,是Spring MVC中实现拦截功能的重要组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值