脚本宝典收集整理的这篇文章主要介绍了SpringMVC基础学习之简单回顾MVC架构和Servlet的使用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。
这个SPRingMVC基础学习系列是用来记录我学习SpringMVC框架基础知识的全过程 (这个系列是参照B站狂神的SpringMVC最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)
之后我将尽量以两天一更的速度更新这个系列,还没有学习SpringMVC框架的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。最后,希望能够和大家一同进步吧,加油吧,编程人!
今天我们来到了SpringMVC基础学习的第一站:简单回顾MVC架构和Servlet的使用。废话不多说,让我们开始今天的学习内容吧。
SSM:MyBatis + Spring + SpringMVC (延续了MVC三层架构思想)
JavaSE:认真学习,老师带,入门快
JavaWeb:认真学习,老师带,入门快
SSM框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力
SpringMVC + Vue - + SpringBoot + SpringCloud + Linux
SSM 整合:JavaWeb做项目
Spring:IOC(控制反转) 和 AOP(面向切面编程)
SpringMVC:SpringMVC的执行流程 (面试可能会问到)
SpringMVC:SSM框架整合!
简单来说,所谓MVC就是Model 模型(包括Pojo、DAO和Service,即数据和业务)+ View 视图(JSP/HTML,展示数据)+ Controller 控制器(Servle,获取请求和返回响应)
Model(模型):数据模型,提供要展示的数据,包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为)。不过一般都分开来写:数据Dao层(Value Object)和服务层(行为Service),也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想要看到的东西
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示,也就是控制器做了个调度员的工作
最典型的MVC就是JSP + Servlet + JavaBean的模式
Model1优点:架构简单,只有模型层和视图层,比较适合小型项目开发
Model1缺点:JSP职责不单一,相当于即担任控制层,又担任视图层,不便于维护
注意::JSP本质上就是一个Servlet
Model2把一个项目分成三部分,包括视图、控制、模型
职责分析:
Controller:控制器
Model:模型
View:视图
Model1:
Model2:
MVC:M:Model (模型层) ; V:View (视图层); C:Controller (控制层)
MVVM:M:Model (模型层) ;V:View (视图层) ;VM: ViewModel(视图模型层),即双向数据绑定
面试常见问题:
问:你的项目的架构是设计好的,还是演进的?
答:
项目架构是演进的,因为没有任何一个项目可以一开始就设计很好的架构,底层架构都是在不断的进行演变的,包括像阿里这样的大公司也不例外
<!-- 导入相应的资源依赖 -->
<dePEndencies>
<!-- spring-webmvc资源依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
<!-- servlet-api资源依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- jsp-api资源依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- jstl资源依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- junIT单元测试资源依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencies>
<!--servlet-api资源依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--jsp-api资源依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
package com.kuang.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 {
/**
* 1.重写doGet方法
*/
@override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/**
* 1.1 获取前端参数
*/
String method =req.getParameter("method");
// 判断调用的请求是add方法还是delete方法
if(method.equals("add")) {
// 执行add方法
req.getSession().setattribute("msg","执行了add方法");
}
if(method.equals("delete")) {
// 执行delete方法
req.getSession().setAttribute("msg","执行了delete方法");
}
/**
* 1.2 调用业务层
* 为了省事, 具体的业务逻辑就不写了
*/
/**
* 1.3 视图转或者重定向
*/
// 1.3.1 使用转发请求
req.getRequestDispatcher("/WEB-iNF/jsp/test.jsp").forward(req,resp);
// 1.3.2 或者使用重定向
// resp.sendRedirect();
}
/**
* 2.重写doPost方法
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}
<?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">
<!-- 1.配置servlet -->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 2.配置servlet-mapping -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<!-- 请求hello的页面,然后会自动转发给hello的servlet来处理 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!-- 3.配置session -->
<session-config>
<!-- 设置超时时间,超过15分钟就自动关闭会话 -->
<session-timeout>15</session-timeout>
</session-config>
<!-- 4.配置欢迎页面 -->
<welcome-file-list>
<!-- 默认欢迎页面设置为index.jsp -->
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
<%@ 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" value="提交"/>
</form>
</body>
</html>
@H_406_1887@
好了,今天的有关 简单回顾MVC架构和Servlet的使用 的学习就到此结束啦。欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连。我们下期见,拜拜啦!
参考视频链接:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂
以上是脚本宝典为你收集整理的SpringMVC基础学习之简单回顾MVC架构和Servlet的使用全部内容,希望文章能够帮你解决SpringMVC基础学习之简单回顾MVC架构和Servlet的使用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。