SpringMVC注解配置

1xml配置方式(配置文件+注解的方式)

前提导入相关依赖:pom文件

说明:下方依赖是ssm项目中较为常用的一部分,可能部分依赖对于springmvc配置并未有关系,根据自己需求添加和删除。

<dependencies> <!--        springmvc依赖-->  <dependency> <groupId>org.springframework</groupId>  <artifactId>spring-webmvc</artifactId>  <version>5.1.2.RELEASE</version> </dependency>  <!--        spring核心依赖-->  <dependency> <groupId>org.springframework</groupId>  <artifactId>spring-core</artifactId>  <version>5.1.2.RELEASE</version> </dependency>  <dependency> <groupId>org.springframework</groupId>  <artifactId>spring-context</artifactId>  <version>5.1.2.RELEASE</version> </dependency>  <!--        spring事务依赖-->  <dependency> <groupId>org.springframework</groupId>  <artifactId>spring-tx</artifactId>  <version>5.1.2.RELEASE</version> </dependency><!--        spring jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.2.0.RELEASE</version></dependency><!--        mysql数据库连接驱动-->  <dependency> <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>5.1.12</version> </dependency>  <!--        Druid数据库连接池-->  <dependency> <groupId>com.alibaba</groupId>  <artifactId>druid</artifactId>  <version>1.2.1</version> </dependency>  <!--        Junit集成单元测试依赖坐标--><dependency> <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  <scope>test</scope> </dependency>
<!--        与junit为基础的spring单元测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.12.RELEASE</version></dependency><!--          servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--        jsp--><dependency> <groupId>javax.servlet</groupId>  <artifactId>jsp-api</artifactId>  <version>2.0</version>  <scope>provided</scope></dependency><!--        切面变成AspectJ依赖--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version></dependency><!--  lombok(此依赖的目的是简化javabean的书写!)--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency><!--jsckson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.9</version></dependency><!--文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency></dependencies>

1.1XML配置文件SpringMVCConfig.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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--开启注解组件扫描--><context:component-scan base-package="com.yc.controller"/><!--开启mvc注解支持--><mvc:annotation-driven/><!--自定义 视图解析器--><!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">//jsp页面放在web-inf下需要配置前缀/WEB-INF/pages/<property name="prefix" value="/WEB-INF/pages/"></property>//为访问的jsp页面拼接缀.jsp<property name="suffix" value=".jsp" ></property></bean>--><!--配置tomcat默认的静态资源处理--><mvc:default-servlet-handler/></beans>

 Controller层控制类

@Controller
public class HelloWordController {
//    编写普通方法/该项目为独立项目,不属于模块所以有target目录,所以在映射目路径时需要注意加上项目名称
//    当作为模块的项目不需要加上项目名称,应为其项目路径为自动映射上下文。@RequestMapping("/page1")public String uservo2(UserVO uservo){return "/hello.jsp" ;}
}

    前端页面hello.jsp:

<%--Created by IntelliJ IDEA.User: lDate: 2023/8/4Time: 15:19To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>你好mvc!!!</h1>
</body>
</html>

         当我们在浏览器的地址栏中输入 localhost:8080/你的项目名/page1

        该请求就会被HelloWordController拦截到进行匹配路径从而找到有        @RequestMapping("/page1")

        执行该注解标注的方法通过return跳转到对应得jsp页面。

1.2 自定义视图解析器

        在配置文件中添加以下配置

    <!--自定义 视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--jsp页面放在web-inf下需要配置前缀/WEB-INF/pages/--><property name="prefix" value="/WEB-INF/pages/"></property><!--为访问的jsp页面拼接缀.jsp--><property name="suffix" value=".jsp" ></property></bean>

         这样我们在访问资源时在注解@RequestMapping("写上你想要映射的URL")

        return "jsp页面名字";

        如下:

//Controler中写如下方法
@RequestMapping("/hello")public String hello(){System.out.println("==>HelloWordController33");return "hello";}

         这样在访问路径

        localhost:8080/你的项目名/hello

        就会根据视图解析器的配置自动给你拼接路径

        localhost:8080/你的项目名/WEB-INF/pages/hello.jsp

注意:如果我们不想通过配置的视图解析器来缝合路径访问资源可以采用请求转发或者重定向的方式绕过视图解析器的缝合路径

//Controler中写如下方法===>请求转发
@RequestMapping("/hello1")public String hello(){System.out.println("==>HelloWordController33");return "forward:/hello.jsp";}//Controler中写如下方法===>重定向
@RequestMapping("/hello2")public String hello(){System.out.println("==>HelloWordController33");return "redirect:/hello.jsp";}

1.3 Ajax+Json进行数据交互:

Controller类

@Controller
public class TestController {@RequestMapping("/ajaxRequest1")public String tt2(){System.out.println("跳转ajax.jsp页面");return "forward:ajax.jsp";}
//    Springmvc异步交互的(数据传输与接收)@RequestMapping(value = "/ajaxRequest")@ResponseBodypublic String tt3(@RequestBody User user){System.out.println("===>>>已进入ajaxRequest");System.out.println("user==>"+user);return "ajax succes!";
}
}

前端jsp页面:

<%--Created by IntelliJ IDEA.User: lDate: 2023/8/8Time: 16:31To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
<%--    导入jq文件--%><script src="${pageContext.request.contextPath}/js/jquery-3.2.1.min.js"></script>
</head>
<body><h1>异步处理数据交互</h1><button id="button1" name="button1" >数据交互</button>
</body><script>// $(function (){$("#button1").click(function (){$.ajax({url: '${pageContext.request.contextPath}/ajaxRequest',type:'post',data:'{"name":"张三","age":12}',contentType:'application/json;charset=utf-8',success:function (response){alert(response);}});})</script>
</html>

2零配置方式(配置类+注解的方式)

配置类SpringMVCConfig的作用相当于将原本的springMVC的xml配置换成了类来配置。

@Configuration//该注解表明该类属于配置类,为了让容器识别
@ComponentScan("com.hskj.controller")//该注解配置需要扫描的Controller包中的控制类
public class SpringMVCConfig {
}

有了配置类还需要定义一个Servlet容器启动类,在里面加载Spring的配置

//定义一个Servlet容器启动类,在里面加载Spring的配置
public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {//该方法加载SpringMVC容器配置@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext webApplicationContext=new AnnotationConfigWebApplicationContext();webApplicationContext.register(SpringMVCConfig.class);//加载springmvc配置;类return webApplicationContext;}//设置请求归属SpringMVC处理@Overrideprotected String[] getServletMappings() {return new String[]{"/"};//所有请求皆处理}//加载Spring容器配置@Overrideprotected WebApplicationContext createRootApplicationContext() {return null;}/*说明:
AnnotationConfigWebApplicationContext webApplicationContext=new AnnotationConfigWebApplicationContext();
在Java中创建一个基于注解的Web应用程序上下文(AnnotationConfigWebApplicationContext)。它是通过使用Spring框架来实现的。Web应用程序上下文是一个容器,用于管理和组织Web应用程序中的各种组件,例如控制器、服务、存储库等等。它是一个能够自动扫描并注册注解标记的类和配置文件的上下文环境。在这个例子中,使用了AnnotationConfigWebApplicationContext类来创建Web应用程序上下文对象。这个对象会自动扫描并注册使用注解配置的类和组件。*/

Controller层 控制类TestCotroler

@Controller
public class TestController {@RequestMapping("/test01")@ResponseBodypublic String test01(){return "==>hello!";}
}

在浏览器地址栏输入路径:    localhost:8080/项目名/save

 

 浏览器结果如下(如果返回中文可能会出现乱码情况)

上述通过配置类的方法实现springmvc的方式分析:

(下图是以userController为例)

@Controller
public class UserController {@RequestMapping("/save")@ResponseBodypublic String save(){return "==》hello!";}
}

 

 

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

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

相关文章

Android 13 Hotseat定制化修改——001 hotseat布局方向

目录 一.背景 二.hotseat布局方向 一.背景 由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图…

web-xss

一、简介 XSS 又称CSS(Cross Site Scripting)或跨站脚本攻击&#xff0c;攻击者在网页中插入由JavaScript编写的恶意代码&#xff0c;当用户浏览被嵌入恶意代码的网页时&#xff0c;恶意代码将会在用户的浏览器上执行。 二、xss的攻击方式 Dom&#xff1a;这是一种将任意 Jav…

质检工具(FindBugs、CheckStyle、Junit、Jmeter、Apifox)

1、Findbugs IDEA软件中可以装该插件,2018版本以前主要搜索FindBugs-IDEA 、2018版本以后主要搜索 SpotBugs。 1.1、FindBugs-IDEA安装及使用流程: 1.2、SpotBugs安装及使用流程: 2、Checkstyle IDEA软件中可以装该插件,所有版本的插件一致:CheckStyle 2.1、安装流程…

【Linux】内核宏定义解释postcore_initcall,arch_initcall,subsys_initcall

postcore_initcall postcore_initcall(pcibus_class_init) 是一个宏&#xff0c;用于在Linux内核初始化过程中注册一个后期初始化函数。 这个宏的含义如下&#xff1a; postcore_initcall 是一个宏定义&#xff0c;用于指定注册的函数在内核初始化的哪个阶段执行。 pcibus_cl…

Nacos服务治理—负载均衡

引入负载均衡 在消费方引入负载均衡机制&#xff0c;同时简化获取服务提供者信息的流程 Spring Cloud引入组件LoadBalance实现负载均衡 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web<…

安卓应用面试

Cordova 说明&#xff1a;一个移动框架&#xff0c;将HTML&#xff0c;CSS&#xff0c;JS封装为原生APP(hybird) 优点&#xff1a;跨平台&#xff0c;利于移植&#xff0c;能利用HTML5的各种特性&#xff0c;快速开发&#xff0c;成本低 缺点&#xff1a;不能使用设备的所以…

查看CentOS版本及系统位数与设置CentOS 7.9 2009 防火墙配置放开端口的命令与过程

一、查看CentOS版本及系统位数 1.1 命令汇总 //1、安装redhat-lsb yum install -y redhat-lsb//2、查看系统版本信息 lsb_release -a //3、查看系统位数 getconf LONG_BIT1.2 截图 二、设置CentOS7.9 2009 防火墙配置放开端口 2.1 命令汇总 //禁止防火墙开机启动。这种方法方…

.netcore grpc客户端流方法详解

一、客户端流式处理概述 客户端流式处理方法在该方法没有接收消息的情况下启动。 requestStream 参数用于从客户端读取消息。 返回响应消息时&#xff0c;客户端流式处理调用完成。客户端可以发送多个消息流到服务端&#xff0c;当所有客户端消息流发送结束&#xff0c;调用请…

libheif —— 2、编写苹果、小米的.heic图片查看器

效果图 .heic简介 HEIC&#xff0c;是iOS 11更新后&#xff0c;iPhone 7及其后硬件&#xff0c;在拍摄照片时的默认图像存储格式。 HEIC是一种图像格式&#xff0c;上线时间还比较短&#xff0c;只有4年左右。自iOS 11和macOS High Sierra&#xff08;10.13&#xff09;内测开始…

16-2_Qt 5.9 C++开发指南_使用样式表Qss自定义界面

进行本篇介绍学习前&#xff0c;请先参考链接01_1_Qt工程实践_Qt样式表Qss&#xff0c;后再结合本篇进行融合学习如何使用样式表定义界面。 文章目录 1. Qt样式表2. Qt样式表句法2.1 一般句法格式2.2 选择器 (selector)2.3 子控件&#xff08;sub-controls&#xff09;2.4 伪状…

将应用设置成系统App/获取Android设备SN号

1&#xff0c;和系统签名一致&#xff1b;&#xff08;签名设置签名文件&#xff09; 2&#xff0c;配置Manifest 至此你的App就是一个系统App了&#xff0c;可以执行一些系统App才能有的操作&#xff0c;如获取机器SN号&#xff1a; public String getSerialNumber() {Strin…

lwip使用收发线程和不使用收发线程差异

使用收发线程的方式相对于不使用收发线程的方式&#xff0c;效率可能会稍低一些&#xff0c;这取决于具体的应用场景和实现方式。 lwIP&#xff08;轻量级IP协议栈&#xff09;是一个针对嵌入式系统的开源TCP/IP协议栈。它可以在单个线程中运行&#xff0c;也可以在多个线程中…