1_SpringMVC_概述,2_SpringMVC_项目搭建

news2024/11/27 6:19:40

 

M   model      模型层   DAO封装        >>> Mybatis
V    view         视图层   html css js  jsp 
C    controller 控制层   Servlet封装    >>> springMVC 

SpringMVC是spring为展现层提供的基于MVC设计理念的优秀WEB框架,是目前最主流的MVC框架之一
SpringMVC通过一套注解,可以让普通的JAVA类成为contrllor控制器,无需继承Servlet,实现了控制层和Servlet之间的解耦
SpringMVC支持Rest风格的URL写法
SpringMVC采用了松耦合,可热插的主键结构,比其他的框架更具扩展性和灵活性

2_SpringMVC_项目搭建

1创建空项目 项目和maven web模块


 
设置maven和 lombok


 
创建maven web module

注意选择骨架为maven-archetype-webapp


键入GroupID和 artfactid

补充项目结构文件夹并标记文件夹


创建好目录后,选中目录,右击 mark directory as  选择对应目录类型即可


修改web.xml 中的版本约束
可以创建一个javaEE项目,然后复制web.xml文件中的内容即可
<?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">
</web-app>
创建普通Servlet,然后跳转至JSP
导入依赖

  <!--servlet jsp 依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
      <scope>provided</scope>
    </dependency>
创建servlet

package com.msb.controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * @Author: Ma HaiYang
 * @Description: MircoMessage:Mark_7001
 */
@WebServlet("/myServlet.do")
public class MyServlet  extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("first.jsp").forward(req,resp);
    }
}
准备一个first.jsp(略)

配置Tomcat启动运行项目
添加运行的外部Tomcat环境

将当前模块放入Tomcat

启动测试: 略

2导入jar依赖

<dependencies>
      <!--spring核心容器包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--spring切面包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--aop联盟包-->
      <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
      </dependency>
      <!--德鲁伊连接池-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
      </dependency>
      <!--mysql驱动-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
      </dependency>
      <!--springJDBC包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--spring事务控制包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--spring orm 映射依赖-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--Apache Commons日志包-->
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <!--log4j2 日志-->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.14.0</version>
        <scope>test</scope>
      </dependency>
      <!--lombok -->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
      </dependency>
      <!--spring test测试支持包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.3.5</version>
        <scope>test</scope>
      </dependency>
      <!--junit5单元测试-->
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
      </dependency>
      <!--springMVC支持包-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.5</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.5</version>
      </dependency>
      <!--jsp 和Servlet  可选-->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>

3在web.xml中配置DispatcherServlet

<?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">
    <!--配置DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置初始化参数,读取springMVC的核心配置文件的位置和名称-->
        <!--
        当然,不使用initparam,springMVC会到一个默认路径下读取默认名称的.xml配置文件
        默认路径为/WEB-INF/
        默认配置文件名为:<servlet-name>-servlet.xml
        我们暂时不推荐这种方式
        -->
       <!-- <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:dispatcherServlet-servlet.xml</param-value>
        </init-param>-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--配置dispatcherServlet的映射路径为 / 包含全部的servlet,  JSP除外-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>


4加入SpringMVC的配置文件

在resources下添加 springmvc.xml
<?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:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!--配置spring包扫描-->
    <context:component-scan base-package="com.msb"></context:component-scan>
    <!--配置视图解析器
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"  ></property>
        <property name="suffix" value=".jsp"  ></property>
    </bean>-->
</beans>

添加log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

5编写controller层处理器

package com.msb.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * @Author: Ma HaiYang
 * @Description: MircoMessage:Mark_7001
 */
@Controller
@RequestMapping("/msb")
public class FirstController  {
    @RequestMapping("/firstController.do")
    public String firstController(){
        System.out.println("this is firstController");
        return "/first.jsp";
    }
}


6编写视图层

<%--
  Created by IntelliJ IDEA.
  User: Mark70
  Date: 2021/4/12
  Time: 12:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  this is first Jsp
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

疫情下如何保持高效项目交付

作者&#xff1a;饶炯 疫情以来&#xff0c;我们工作和生活的正常秩序不时受到影响&#xff0c;项目开发过程中不时出现项目成员被封闭或开发现场封锁的情况&#xff0c;很多项目不得不临时选择远程开发模式&#xff0c;项目沟通和协作中出现了各种新的问题和困难&#xff0c;严…

[附源码]计算机毕业设计springboot4S店汽车售后服务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python库的使用

文章目录库的使用标准库认识标准库import导入模块使用示例&#xff1a;日期差计算使用示例&#xff1a;字符串操作1&#xff09;翻转单词顺序2&#xff09;旋转字符串3&#xff09;统计是给定字符串前缀的字符串数目第三方库认识第三方库包管理器pip使用示例&#xff1a;生成二…

QFile(文件)

QFile QFile提供一个用于读/写的接口&#xff0c;是一个可以用来读/写二进制文件的Qt资源的I/O设备&#xff0c;QFile可以单独使用&#xff0c;一般配合QTextStream或QDataStream 输入文件路径时最好使用"/"作为分隔符 构造函数&#xff1a; 常用的函数&#xff1a;…

前端甘特图组件开发(二)

自定义时间轴功能 由于常见的甘特图时间轴只支持按照天/周/月/年或者固定的时间单位进行划分&#xff0c;但实际使用场景下有时候会需要按照特定且不规则的时间段对进度数据进行直观划分。因此本组件在原时间轴的基础上添加新的自定义时间轴&#xff0c;可通过数据配置自定义时…

Spring Bean的作用域

1.写在前面 前面的博客我们已经介绍完Spring的依赖的查找来源&#xff0c;依赖注入的来源等等相关知识&#xff0c;今天我们继续来介绍Spring的Bean的作用域。 2.Spring Bean作用域 作用域 3.“singleton” Bean作用域 配置 4.“prototype” Bean作用域 配置 注意事项 Sp…

[Redis]-持久化方式

[Redis]-持久化方式 森格 | 2022年11月 本文是在学习Redis中&#xff0c;对Redis持久化的个人总结。 一、 持久化与Redis 1.1 什么是持久化 持久化是一种将程序数据在瞬时状态和持久状态间的转换机制&#xff0c;也就是把数据保存到可永久保存的存储设备中去。 1.2 Redis的持…

【Hack The Box】linux练习-- Writer

HTB 学习笔记 【Hack The Box】linux练习-- Writer &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f3…

《web课程设计》使用HTML+CSS制作大学生校园二手交易网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

分布式架构与微服务平台是当今IT界的关键技术&#xff0c;也是资深软件工程师和系统架构师必须掌握的核心技术。 微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术&#xff0c;它们并不是凭空出现的&#xff0c;一定继承了某些“前辈”的优点。我们不仅要了解…

十万部冷知识:足球踢进了观众席,观众能把球拿走吗?

在看足球比赛的时候&#xff0c;我们经常会看到球员一脚射门踢偏了&#xff0c;球被打飞的情况&#xff0c;这时候球可就奔着观众席去了。就是因为考虑到有这种情况的发生&#xff0c;在比赛之前&#xff0c;比赛组织者&#xff0c;都会提前准备很多的备用球&#xff0c;当球被…

R11.8-11.8-11.8-11.8-BABSL

R11.8-11.8-11.8-11.8-BABSL R11.8-11.8-11.8-11.8-BABSL哈威柱塞泵宁波秉圣&#xff0c;主要特点是高自吸转速&#xff0c;工作效率高&#xff0c;结构紧凑&#xff0c;工作压力高等。广泛用于压力机器具&#xff0c;测试和实验室设施&#xff0c;润滑装置等设备&#xff0c;在…

Home Assistant添加ESPHome设备(IO控制继电器)

文章目录1.在加载项商店中安装ESPHome2.添加设备2.1 编译并下载.bin到电脑2.2 下载固件到ESP82662.3 在Home Assistant添加并配置设备2.4 在设备与服务中配置3.再添加一个设备1.在加载项商店中安装ESPHome 点击配置-加载项 点击加载项商店 搜索ESPHome 2.添加设备 这里…

为什么我在公司里访问不了家里的电脑?

本文为掘金社区首发签约文章&#xff0c;14天内禁止转载&#xff0c;14天后未获授权禁止转载&#xff0c;侵权必究&#xff01; 上篇文章「为什么我们家里的IP都是192.168开头的&#xff1f;」提到&#xff0c;因为IPv4地址有限&#xff0c;最大42亿个。为了更好的利用这有限的…

前端学习一、准备工作

一、电脑 首先想学习前端肯定是需要一台电脑&#xff0c;配置方面目前市面上3千左右的电脑就差不多了&#xff0c;如果有能力的话肯定是越高越好&#xff0c;如何挑选笔记本可自行搜索&#xff0c;我在这方面不专业就不讲了。 二、安装软件 谷歌浏览器 如果无法访问谷歌浏览…

你知道MySQL是如何解决幻读的吗?

前言 SQL标准中定义了4种隔离级别&#xff0c;分别是读未提交、读已提交、可重复读以及序列化。不同的隔离级别下&#xff0c;可以解决不同的并发问题&#xff0c;如下图所示。当然MySQL也基本遵循了这个标准&#xff0c;但是在实现上稍有不同。 本文重点探讨下MySQL是如何解…

MySQL线程池

概述 池化技术&#xff0c;包括线程池、连接池、内存池、对象池等。作用就是提前保存大量的资源&#xff0c;或将用过的资源保存起来&#xff0c;等下一次需要使用该资源时再取出来重复使用。 线程池&#xff1a;通过预先创建一定数量的线程&#xff0c;当有请求达到时&#…

黑苹果之技嘉(GIGABYTE)主板BIOS设置篇

很多童鞋安装黑苹果的时候会卡住&#xff0c;大部分原因是cfg lock 没有关闭&#xff0c;以及USB端口或SATA模式设置错误。 为了避免这些安装阶段报错的情况发生&#xff0c;今天给大家分享一下超详细的BIOS防踩坑设置指南--技嘉&#xff08;GIGABYTE&#xff09;主板BIOS篇&am…

OpenGL官方文档中的入门教程源代码:在3维空间中自由移动

OpenGL官方文档中的入门教程源代码&#xff1a;在3维空间中自由移动项目总览&#xff1a;一、开发前的准备工作1.将以上链接中的三个文件分别放到自己硬盘的一个文件夹中&#xff1a;例如D盘/OpenGL/...2.打开VS2022创建一个项目&#xff0c;右击窗体选择属性3.配置这3个文件的…

SQL Server全套教程(基于SQL语句----预览版)

SQL Server全套教程全程干货1. 数据库的基础操作1.1.0 创建数据库1.1.1 查看及修改数据库1.1.3 分离、附加和删除数据库1.1.4 数据库的备份和还原2.数据库表的相关操作2.1.0 常用数据类型2.1.1 表结构的创建2.1.2 表结构的查看及修改2.1.3 表约束的创建2.1.4 表约束的修改2.1.5…