javaee之SpringMVC1

news2024/11/19 14:49:10

三层架构与MVC设计模式介绍

一张图介绍 

之前在写软件设计的三层架构的时候,有一张图直接拿过来

 springMVC的一些简单介绍

 

 入门案例

 一、入门案例之需求分析

 

二、搭建开发环境

1.利用骨架创建一个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>com.pxx</groupId>
  <artifactId>springmvc_1.0</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>

  <name>springmvc_1.0 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!--
    给一个下面配置的版本,后面都不用配置了
    -->
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>

    <dependencies>
      <!--springIOC的核心框架-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
      </dependency>
  </dependencies>

  <build>
    <finalName>springmvc_1.0</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

 想要玩SpringMVC的框架,就必须去配置前端的控制解析器,也就是在web.xml中进行配置

 上面没有配完,就只是一个最基本的配置

然后下面我们在resources里面配置一个springmvc.xml文件

下面我们来配置一下服务器

 下面我们进入编码状态

先创建一个index.jsp文件

那么根据我们的业务要求,就会去请求到一个类,这个类,在springMVC中相当于就是控制器的角色Controller

 这个类我们就可以通过IOC把类交给Spring来进行管理。那么这个时候Spring的配置文件就起作用了。

我们必须去配置一下springmvc.xml。也就是加入涉及mvc的约束,还有context的约束

 

上面把类交给了Spring管理,也就是在内存里面有对象了,那么如何才能找到这个类里面的方法呢

就是在方法上面做一个请求映射

 

 现在我们必须去加载springmvc.xml的配置文件,不加载springmvc.xml的配置文件,怎么加载对象,怎么配置注解和扫描包

 

这样就配好,服务器一启动,就会创建一个DispatcherServlet对象,这个对象一创建,就会给我们去加载springmvc.xml的配置文件,这个配置一加载,就会扫描包,然后产生对象。

 

这里返回一个success,表明就是要去访问success.jsp页面

那么下面我们去创建这个页面

 

 

也就是说,上面方法执行完,就要去找这个成功的页面,可是怎么找呢,我们就要在springmvc.xml里面配置一个视图的解析器

开启对注解的支持

 

 下面去index.jsp页面加上请求路径

 部署一下项目,配置一个访问路径

 

 

入门案例流程总结 

 入门案例使用组件介绍

 RequestMapping注解的使用说明

 

 

 

 

重新部署一下项目

 

 

 下面说一下RequestMapping注解的属性

 请求参数绑定入门

下面新建一个jsp页面来测试参数绑定

 

那么在控制器层面,我们在创建一个获取相关参数的控制器

 修改param.jsp页面代码

重新部署一下项目启动

 

请求参数绑定实体类型

 

我们先来写一个传送数据的表单,还是在param.jsp的页面来做

 再去看一下我们控制层

然后我们去创建一个相关的account对象,它内部还报了一个引用的user对象

 

然后再来创建user对象

 

 再回过头去编写一下我们的jsp文件

 ​​​​​​​

 重新部署一下服务器

 

 

配置解决中文乱码的过滤器

 

 

现在我们直接去配置一个过滤器就行

 

 

 请求参数绑定集合类型

 先去修改一下account类

然后我们去修改一下param.jsp

 

 

 自定义类型转换器演示异常

 一般来说,我们从前端传过来的参数,都是字符串类型的,那为什么我们上面进行封装的时候,那么匹配自如呢,是因为springMVC已经在底层给我们进行了参数的数据类型转换。

但是,有一点必须知道,如果有时候我们输入的数据格式不对,springMVC就识别不来,换句话说,Spring 也就给我们转换不了。比如日期格式2012/12/12,这种日期springMVC可能是可以帮我们识别的,但是如果我们写的是这种格式2012-12-23,可能就会出现异常。

下面展示一下这种异常

先在前端写一个传输数据的表单

然后去控制器类里面写这个方法

 ​​​​​​​

 服务器重新部署一下

 

自定义类型转换器代码编写

 

 

 

接口上定义泛型的意思就是,是在实现该接口的时候,指定数据类型。所以上面可以这样重写

转换器是有了,但是还没有注册到springMVC容器里面,这个需要在springmvc.xml里面配置

 

注意还要去修改User表中的一些参数信息,如果不匹配,是封装不上数据的

 

 

 

感觉Spring对这个日期的解析支持不太够啊

获取Servlet原生的API 

常用注解

 

 

 写一个注解相关的控制器

 

 

 

 

 

运行结果:

 

下面说一下restfule代码设计风格 

 

 但是restfule这种编程风格,可能会出现的问题就是,同一个访问,但是访问方式都是一样的情况。

 那么上面这两种方式执行哪一个?restfule就说了,可以通过在路径上面传入一个占位符解决

 

 

 

 

 

 

 

 

 先来说一下这个注解放到参数上

在来说放到参数上面

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

代码质量与安全 | 如何将清洁代码标准扩展到整个企业,促进业务上的成功?

清洁代码能够让软件开发工作变得更简单、更有趣。因为如果代码不够清洁&#xff0c;开发人员将花费很多时间在解决编码问题上&#xff0c;使他们无法将精力投入开发新代码、解决其他更有趣的问题上。 那么&#xff0c;该如何将清洁代码标准扩展到整个企业呢&#xff1f;阅读本…

操作系统:进程与线程之间的区别及联系

一、定义 1、进程&#xff1a;进程是一个具有独立功能的程序关于某个数据集合的以此运行活动。 是系统进行资源分配和调度的独立单位&#xff0c;也是基本的执行单元。是一个动态的概念&#xff0c;是一个活动的实体。它不只是程序的代码&#xff0c;还包括当前的活动。 进程…

学习UI设计都可以学习哪些软件?

学UI设计要学习哪些工具软件&#xff1f;今天来做个大盘点 ​Photoshop(简称PS) 不懂设计的人也听说过PS著名大名。确切地说&#xff0c;确切地说&#xff0c;PS它是一款强大的综合性软件&#xff0c;主要用于位图处理&#xff0c;可以做图片处理&#xff0c;也可以做UI设计、平…

【财务】FMS财务管理系统---日常数据核对与处理

开发FMS财务管理系统&#xff0c;每天都会与数据打交道&#xff0c;数据的核对与处理是日常工作的一部分&#xff0c;相信接触过财务系统的同学都深有感触&#xff0c;为了一个差异查来查去&#xff0c;最终发现是前端业务系统的问题&#xff0c;白忙一场&#xff0c;本篇就说一…

筑博设计:知识管理数字化提升企业核心竞争力

编者按&#xff1a;这是一个真正与业务相融合的知识管理系统&#xff0c;筑博设计陈主任的分享专业且精细&#xff0c;从容而豁达&#xff0c;不仅有行业的经验&#xff0c;还有做事的方法&#xff0c;更有做人的情怀&#xff0c;让我们看到了“知识就是力量&#xff0c;知识使…

【HTML+CSS+JavaScript】实现萤火虫闪烁效果

文章目录【HTMLCSSJavaScript】实现萤火虫闪烁效果一. 效果图二. HTML部分代码三. CSS部分代码四. JavaScript部分代码五. 外部js文件代码六. 完整的代码和图片获取【HTMLCSSJavaScript】实现萤火虫闪烁效果 本文主要讲解屏幕不断闪烁星光效果&#xff08;配合夜晚深林的背景图…

使用DataSecurity Plus监控Windows文件完整性

使用我们的文件完整性监控软件DataSecurity Plus&#xff0c;与精明的黑客&#xff0c;突发的恶意软件爆发以及挑战法规要求进行战斗。这种先进的工具还有助于生成可操作的报表&#xff0c;提供基于严重性的告警&#xff0c;简化合规性要求&#xff0c;发现妥协指标&#xff0c…

ip route常用语法

官方手册参考&#xff1a; ip-rule(8) - Linux manual page #interface ens11f0 #Bring up an interface ip link set dev ens11f0 up ip addr add 11.126.48.231/27 dev ens11f0#Use table 101 with metrics 101 for specific interface routing #Each interface should use i…

科技云报道:信创基础设施迎来“升级潮”,可持续性架构成关键技术

科技云报道原创。 如果说单一领域的技术突破是河流&#xff0c;信创毫无疑问是汪洋大海。 随着“数字中国”战略的明确&#xff0c;数字化转型进程加速&#xff0c;信创产业成为国家战略布局的重点领域之一&#xff0c;是缩短科技发展周期以及国内外科技差距的一剂良方。 2…

立根铸魂,崛起数智时代 | 麒麟信安携手openEuler 共推操作系统产业腾飞发展!

操作系统产业峰会2022于12月28日在线上举办。本次峰会由开放原子开源基金会、中国软件行业协会、CCF&#xff08;中国计算机学会&#xff09;开源专委会、绿色计算产业联盟、中关村科学城管委会共同主办&#xff0c;华为、麒麟信安等单位共同协办&#xff0c;以“立根铸魂 崛起…

数据结构基础:P1-基本概念----编程作业02:Maximum Subsequence Sum

本系列文章为浙江大学陈越、何钦铭数据结构学习笔记&#xff0c;前面文章链接如下&#xff1a; 数据结构基础&#xff1a;P1-基本概念 数据结构基础&#xff1a;P1-基本概念----编程作业01&#xff1a;最大子列和问题 文章目录一、题目描述二、代码实现一、题目描述 题目描述&…

【408篇】C语言笔记-第十九章(C语言语法进阶)

文章目录第一节&#xff1a;条件运算符与逗号运算符1. 条件运算符2. 逗号运算符第二节&#xff1a;自增自减运算符1. 自增自减运算符2. 自增自减运算符与取值运算符第三节&#xff1a;位运算符1. 位运算符2. 异或运算符实例解析第四节&#xff1a;switch和do while讲解1. switc…

使用Bigemap计算挖填土石方量

1、 Bigemap GIS Office 第一步&#xff1a; 用Bigemap GIS Office导出待计算区域的高程数据&#xff1a; 1.1 打开Bigemap GIS Office选择目标区域&#xff1a;如下图&#xff1a; 1.2选择的目标区域的高程数据&#xff08;NASA, TIF, 高精度高程数据&#xff09; 1…

【SSM框架】MyBatis核心配置文件详解

1.MyBatis核心配置文件之environments <!--environments&#xff1a;配置多个连接数据库的环境 属性&#xff1a;default&#xff1a;设置默认使用的环境的id --><environments default"development"><!--environment&#xff1a;配置某个具体的环境 …

C++ opencv形态学、轮廓查找、特征检测和图像分割

C opencv形态学、轮廓查找、特征检测和图像分割形态学基本处理方法二值化全局二值化局部二值化腐蚀和膨胀图像形态学运算开运算闭运算顶帽黑帽代码图像轮廓寻找轮廓绘画轮廓轮廓的面积和周长多边形逼近和凸包多边形逼近凸包外接矩形最小外接矩形最大外接矩形案例车辆检测&#…

召回和排序模型中的用户行为序列的建模

1. 概述 用户在使用一个APP或者浏览网页的过程中&#xff0c;都是由一些行为构成的&#xff0c;以资讯类为例&#xff0c;通常对一个帖子感兴趣&#xff0c;对于感兴趣的帖子&#xff0c;通常会点击进入查看&#xff0c;或者点击收藏或者对其进行评论&#xff0c;这一系列行为…

电脑录屏怎么录全屏?win10电脑如何录屏

随着互联网的发展&#xff0c;线上办公以及网课越来越频繁&#xff1b;线上办公或者网课都是使用电脑来完成工作和学习的&#xff1b;那Win10电脑如何录屏以及电脑录屏怎么录屏全屏呢&#xff1f;接下来给大家分享三个电脑录制全屏的教程方法给大家&#xff1b; win10录制全屏方…

【MySQL】绿色版下载配置教程(Windows)

文章目录下载MySQL压缩包1 创建my.ini文件2 配置mysql环境变量3 在终端执行命令下载MySQL压缩包 https://dev.mysql.com/downloads/mysql/ 1 创建my.ini文件 模板内容如下 [mysqld] basedir D:\\Program Files\\mysql # 设置mysql的安装目录 datadir D:\\Program Files\\m…

红黑树简介

一、红黑树 1、概念 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉搜索树。它在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red或 Black。 通过任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其…

为什么生产MES系统对工厂管理如此重要?

随着生产业务、计算机技术的发展&#xff0c;MES管理系统的定义也是在不断的变化。但是&#xff0c;计划调度、质量管理、生产执行以及数据&#xff08;设备&#xff0c;产品信息&#xff09;采集&#xff0c;一直都是MES的核心功能。 工业物联网&#xff0c;对于制造业来说并…