对象不用我去找,我只管来学SpringMVC原理(一)

简介: SpringMVC一、回顾一下servlet

首先需要回顾一下什么spring(重点:IOC和AOP),mvc(model view controller)


🐳点击送你到《可以查看Spring的相关》


MVVM: VM:view-model双向绑定


jsp本质是一个servlet


Spring:是一个大杂烩,我们可以将SpringMVC中的所有要用到的bean,注册到Spring中


一、回顾一下servlet


说实话,如果不回顾,我都不知道我都快忘记了。


创建一个普通的maven项目以及将添加web支持,在项目上右键点击add framework support,就可以看到了。



1.项目框架:


微信图片_20211230180806.png


2.导入依赖:

<dependencies>
    <!--Servlet 依赖-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!--JSP依赖-->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
</dependencies>

3.编写一个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 {
        //1.获取前端参数
        String method = req.getParameter("method");
        if(method.equals("add")){
            //对session对象赋值
            req.getSession().setAttribute("msg","执行了add方法");
        }
        if(method.equals("delete")){
            req.getSession().setAttribute("msg","执行了delete方法");
        }
        //2.调用业务层
        //3.视图转发或重定向 resp.sendRedirect();
        req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

4.编写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>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.hxl.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--servlet的请求路径-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
<!--    &lt;!&ndash;设置超时时间&ndash;&gt;
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
    &lt;!&ndash;欢迎页,默认是index.jsp&ndash;&gt;
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    -->
</web-app>


5.测试页test.jsp


页面放置的位置,如果不想让用户看见就放在WEB-INF下,公共页面放在web下面

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

6.请求表单form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/hello" method="post">
    <input type="text" name="method">
    <input type="submit">
</form>
</body>
</html>

7.🐳点击送你到配置tomcat


启动查看


http://localhost:8080/hello 会报500错误因为没有数据


http://localhost:8080/hello?method=add:执行了add方法


MVC框架要做的事情


  • 将url映射到java类或Java类的方法


  • 封装用户提交的数据


  • 处理请求–调用相关的业务处理–封装响应数据


  • 将响应的数据进行渲染,jsp/html等表示层数据


相关文章
|
5月前
SpringMVC 域对象共享数据
SpringMVC 域对象共享数据
29 0
|
5月前
【SpringMVC】SpringMVC方式,向作用域对象共享数据(ModelAndView、Model、map、ModelMap)
【SpringMVC】SpringMVC方式,向作用域对象共享数据(ModelAndView、Model、map、ModelMap)
58 1
|
5月前
SpringMVC之获取请求参数和域对象共享数据
【1月更文挑战第18天】 一、SpringMVC获取请求参数 1、通过ServletAPI获取 2、通过控制器方法的形参获取请求参数 3、@RequestParam 4、@RequestHeader 5、@CookieValue 6、通过POJO获取请求参数 7、解决获取请求参数的乱码问题 二、域对象共享数据 1、使用ServletAPI向request域对象共享数据 2、使用ModelAndView向request域对象共享数据 3、使用Model向request域对象共享数据 4、使用map向request域对象共享数据 5、使用ModelMap向request域对象共享数据
97 0
|
5月前
|
前端开发 Java 应用服务中间件
SpringMVC源码分析之策略对象初始化
SpringMVC源码分析之策略对象初始化
57 0
|
5月前
|
Java Spring
SpringMVC控制层private方法中出现注入的service对象空指针异常
一、现象 SpringMVC中controller里的private接口中注入的service层的bean为null,而同一个controller中访问修饰符为public和protected的方法不会出现这样的问题。 controller中的方法被AOP进行了代理,普通Controller如果没有AOP,private方法中bean也是正常的。
|
11月前
|
Java Spring
springMVC中获取request 对象
springMVC中获取request 对象
|
12月前
|
存储 JavaScript 前端开发
SpringMVC 域对象共享数据
SpringMVC 域对象共享数据
SpringMVC学习(五):向request域对象共享数据的五种方法
SpringMVC学习(五):向request域对象共享数据的五种方法
128 0
SpringMVC学习(五):向request域对象共享数据的五种方法
|
前端开发 Java API
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
275 0