【WEEK2】 【DAY1】第一个MVC程序之使用注解【中文版】

news/2024/7/27 8:50:36/文章来源:https://blog.csdn.net/2401_83329143/article/details/136537004

2024.3.4 Monday

接上文 【WEEK1】 【DAY5】第一个MVC程序之配置文件【中文版】

目录

  • 3.2.使用注解(在实际使用中用不到3.1)
    • 3.2.1.新建一个module,名为springmvc-03-hello-annotation,添加web支持
    • 3.2.2.由于Maven可能存在资源过滤的问题,我们将配置完善(web-pom.xml)
    • 3.2.3.在pom.xml文件引入相关的依赖
    • 3.2.4.配置web.xml
    • 3.2.5.添加SpringMVC配置文件
    • 3.2.6.新建视图层
    • 3.2.7.新建HelloController
    • 3.2.8.配置Tomcat运行
    • 3.2.9.小结

3.2.使用注解(在实际使用中用不到3.1)

3.2.1.新建一个module,名为springmvc-03-hello-annotation,添加web支持

3.2.2.由于Maven可能存在资源过滤的问题,我们将配置完善(web-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"><parent><artifactId>SpringMVC_try1</artifactId><groupId>com.kuang</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>springmvc-03-hello-annotation</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build></project>

3.2.3.在pom.xml文件引入相关的依赖

  • 主要有Spring框架核心库、Spring MVC、servlet , JSTL等。
    (在父依赖中已经引入了:仅需检查右侧Maven栏中的Dependencies)

3.2.4.配置web.xml

  1. 添加web支持(详见W1D21.3 建立一个module:名为 springmvc-01-servlet, 添加Web app的支持
  2. 添加lib依赖(详见W1D53.1.8.配置tomcat,启动测试
  3. 修改web-WEB-INF-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"><!--1.注册servlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--通过初始化参数指定SpringMVC配置文件的位置,进行关联--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value><!--     这里仍然需要配置springmvc-servlet.xml文件       --></init-param><!-- 启动顺序,数字越小,启动越早 --><load-on-startup>1</load-on-startup></servlet><!--所有请求都会被springmvc拦截 --><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
  1. 注意点
  • / 和 /* 的区别:< url-pattern > / </ url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。< url-pattern > /* </ url-pattern > 会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。
  • 注意web.xml版本问题,要最新版!
  • 注册DispatcherServlet
  • 关联SpringMVC的配置文件
  • 启动级别为1
  • 映射路径为 / 【不要用/*,会404】

3.2.5.添加SpringMVC配置文件

  1. 在resource目录下新建springmvc-servlet.xml配置文件
    在这里插入图片描述
    在这里插入图片描述
    配置的形式与Spring容器配置基本类似,为了支持基于注解的IOC,设置了自动扫描包的功能,具体配置信息如下:
<?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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 --><!-- 想要让注解生效,则需要(在java文件夹下)额外注册一个包(每层名称如下行双引号引用部分com.kuang.controller) --><context:component-scan base-package="com.kuang.controller"/><!-- 让Spring MVC不处理静态资源 --><!-- 一般会引用一些资源(suffix is like .css .js .html .mp3 .mp4)--><!-- 下面这行是默认的资源过滤代码(固定写法) --><mvc:default-servlet-handler /><!--支持mvc注解驱动在spring中一般采用@RequestMapping注解来完成映射关系要想使@RequestMapping注解生效必须向上下文中注册DefaultAnnotationHandlerMapping和一个AnnotationMethodHandlerAdapter实例这两个实例分别在类级别和方法级别处理。而annotation-driven配置帮助我们 自动完成 上述两个实例的注入。--><mvc:annotation-driven /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean></beans>
  1. 注意
  • 在视图解析器中我们把所有的视图都存放在/WEB-INF/目录下,这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。
  • 让IOC的注解生效
  • 静态资源过滤 :HTML . JS . CSS . 图片 , 视频 …
  • MVC的注解驱动
  • 配置视图解析器

3.2.6.新建视图层

  1. 在web->WEB-INF下创建->jsp文件夹->再创建hello.jsp文件
    在这里插入图片描述
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>标题显示在这里</title>  <!--显示在标签上-->
</head>
<body>
${msg}
</body>
</html>

参考的链接:HTML中的head和body标签及作用
2. EL表达式
Expression language可以取出Model中存放的值,或者对象
EL表达式

3.2.7.新建HelloController

  1. 在src->main->java->com->kuang->controller文件夹下创建HelloController.java文件
    在这里插入图片描述
package com.kuang.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;@Controller //自动装配到springmvc-servlet.xml第15行
//@RequestMapping("/hello0")//如果在这写地址,则下方所有都在此地址下继续拼接具体路径public class HelloController {// 这是一个映射请求,如果想要多个请求,则需要写多个方法(从@RequestMapping()开始直至方法结束)//如果第八行生效,则真实路径为localhost:8080/hello0/hello@RequestMapping("/hello")   //真实访问地址“项目名->HelloController->hello”:此处是跳转到hello.jsppublic String hello(Model model){//封装数据:向模型中添加属性msg与值,可以在JSP页面中取出并渲染model.addAttribute("msg","Hello,SpringMVC Annotation");return "hello"; //在装配到springmvc-servlet.xml后将被视图解析器处理}}
  1. 说明
  • @Controller是为了让Spring IOC容器初始化时自动扫描到;
  • @RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello;
  • 方法中声明Model类型的参数是为了把Action中的数据带到视图中;
  • 方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。

3.2.8.配置Tomcat运行

详见W1D53.1.8.配置tomcat,启动测试,开启服务器,访问对应的请求路线
http://localhost:8080/springmvc_03_hello_annotation_war_exploded/hello
在这里插入图片描述

3.2.9.小结

  1. 实现步骤
  • 新建一个web项目
  • 导入相关jar包
  • 编写web.xml , 注册DispatcherServlet
  • 编写springmvc配置文件
  • 接下来就是去创建对应的控制类 , controller
    -最后完善前端视图和controller之间的对应
  • 测试运行调试
  1. 使用springMVC必须配置的三大件
  • 处理器映射器、处理器适配器、视图解析器
  • 通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新APP开发趋势,探索2024年的创新与挑战

2024年&#xff0c;移动应用市场仍然是创新与变革的焦点。随着技术的不断发展和用户需求的不断变化&#xff0c;APP开发行业也在不断演进。本文将深入探讨2024年最新的APP开发趋势&#xff0c;以及所带来的创新与挑战&#xff0c;并介绍虎克技术公司提出的解决方案。 1. 强调用…

32单片机基础:输入捕获测频率

接线图如下图所示&#xff1a; 我们复制之前写过的代码6-3 PWM驱动LED呼吸灯 在PWM模块中&#xff0c;执行的逻辑是&#xff0c;初始化TIM2的通道1&#xff0c;产生一个PWM波形&#xff0c;输出引脚是PA0&#xff0c;通过SetCompare1的函数&#xff0c;可以调节CCR1寄存器的值…

spring中事务失效的场景有哪些?

异常捕获处理 在方法中已经将异常捕获处理掉并没有抛出。 事务只有捕捉到了抛出的异常才可以进行处理&#xff0c;如果有异常业务中直接捕获处理掉没有抛出&#xff0c;事务是无法感知到的。 解决&#xff1a;在catch块throw抛出异常。 抛出检查异常 spring默认只会回滚非检…

Ant Design Vue 表格单选选中改变当前行颜色

像这样鼠标移开后&#xff0c;背景色就不见了&#xff0c;但是确实是选中了这条数据 这种就是点击了选中的行后背景变色在点击别的别的变色 代码&#xff1a; <ele-pro-tableref"tableRef"row-key"userExtendId":columns"columns":rowClassN…

数据结构---二叉树

文章目录 一、二叉树的概念二、二叉树的形状三、二叉树的性质四、二叉树的存储。五、二叉树的遍历六、二叉树相关习题1.判断二叉树是否为完全二叉树2.寻找最近公共祖先3.从中序与后序遍历序列构造二叉树 一、二叉树的概念 二叉树是一个由结点构成的有限集合。 该集合可以为空&a…

【牛客】HJ62 查找输入整数二进制中1的个数

题目链接&#xff1a;查找输入整数二进制中1的个数_牛客题霸_牛客网 (nowcoder.com) 解题思路&#xff1a; 解法一: 可以举一个八位的二进制例子来进行分析&#xff0c;对于二进制操作&#xff0c;我们直到&#xff0c;除以一个2&#xff0c;原来的数字会减少一个0.如果除的过程…

企业微信高效沟通的秘诀

在数字化营销的浪潮中&#xff0c;企业微信已成为连接企业和客户的重要渠道。为了提升客户服务效率&#xff0c;许多企业通过设置快捷回复语来优化客户接待流程。然而&#xff0c;随着客户量的激增&#xff0c;传统的快捷回复已无法完全满足需求。今天&#xff0c;我要为大家介…

使用 Git 跟踪项目文件

本章内容为&#xff1a;用Django 写学习笔记程序第三章.2部署程序摘录&#xff0c;详情内容查看请跳转下方链接&#xff1a; 用Django 写学习笔记程序第三章.2部署程序 文章目录 使用 Git 跟踪项目文件虚拟环境中安装 gitgit 是什么git 安装完成后的简单配置创建项目忽略文件初…

[AutoSar]BSW_Com013 CAN TP 模块配置

目录 关键词平台说明一、缩写对照表二、Functional Description&#xff08;vector&#xff09;2.1 Asynchronous and Synchronous behavior of CanTp_Transmit2.1.1 asynchronous 2.1.2 synchronous2.2 Separation Time by Application 三、CanTpChannels3.1 接收端3.2 发送端…

element---tree树形结构(返回的数据与官方的不一样)

项目中要用到属性结构数据&#xff0c;后端返回的数据不是官方默认的数据结构&#xff1a; <el-tree:data"treeData":filter-node-method"filterNode":props"defaultProps"node-click"handleNodeClick"></el-tree>这是文档…

运行springboot项目提示:java: 错误: 不支持发行版本 18、java: 错误: 无效的源发行版:18

java: 错误: 不支持发行版本 18 解决方法&#xff1a;修改字节码版本&#xff0c;可以多试几次。 java: 错误: 无效的源发行版&#xff1a;18 解决方法&#xff1a; 出现这些错误原因&#xff1a; spring版本与jdk版本不对应 我的spring boot版本是3.2.2&#xff0c;对应的j…

5、设计模式之原型模式(Prototype)

一、什么是原型模式 原型模式属于创建型设计模式。通过复制现有的实例来创建新的实例&#xff0c;无需知道相应类的信息。 简单的讲就是当我需要创建一个指定的对象时&#xff0c;刚好现在就有这个对象&#xff0c;但又不能直接使用&#xff0c;所以简单的方式就是克隆一个一摸…

【阿里云系列】-基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…

Golang入门简介与基本语法学习

简介 Golang的出现背景 Go语言&#xff0c;或我们通常称之为Golang&#xff0c;它的设计哲学深受其创造者的软件开发经验影响&#xff0c;它旨在实现快速编译、高性能、静态类型检查以及简洁明了的代码风格。 是由Google开发的一个开源编程语言&#xff0c;它首次公布于2009…

Qt(C++) | QPropertyAnimation动画(移动、缩放、透明)篇

动画类继承关系图 # QPropertyAnimation QPropertyAnimation是一个可以在Qt应用程序中使用的动画框架。它可以用于创建各种动画效果,包括但不限于以下几种: 1. 移动动画:可以将一个对象从一个位置平滑地移动到另一个位置。比如,你可以创建一个按钮,当用户点击它时,按钮…

短视频解析接口分发系统

宝塔面板&#xff1a;Nginx系统 php7.2 Mysql 5.6-5.7 伪静态Thinkphp 上传文件直接访问域名安装即可 可以自备 听说后边要出saas去水印小程序 下载地址&#xff1a;https://pan.xunlei.com/s/VNskSEelfRVIzoSm5P5Rcw34A1?pwdqzhh# 接口演示&#xff1a; 前端演示…

王道机试C++第 5 章 数据结构一:向量vector和蓝桥杯13年两个程序 Day31

5.1 向量 有限个类型相同的变量的线性集合&#xff0c;组成数组的各个变量称为数组的元素。给每个元素分配唯一的一个下标&#xff0c;就能用这个下标指代该元素。还可通过下标直接访问数组中的任何一个元素&#xff0c;并且这些访问能在常数时间内完成。 1&#xff0e;STL-v…

TortoiseSVN 报错:The server unexpectedly closed the connetion

前言 CentOS7Linux 安装subversionmod_dav_svn&#xff0c;搭建subversion(svn)服务器 The server unexpectedly closed the connetion 解决办法 重启Apache服务 shell> systemctl restart httpd

【Ubuntu】将多个python文件打包为.so文件

1.为什么要将python打包为.so文件&#xff1f; 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…

安装包逆向1

1.找到程序的入口点 在IDA中我们看到函数非常多&#xff0c;但是一般都是有主要的入口的&#xff0c;所以找一下有没有主函数 可以直接 CtrF直接查找 CNsInstaller::CNsInstaller 这里搞半天在获取文件路径 CNsInstaller::StartInstall CNsInstaller::InstallFunc char…