手把手教你搭建SpringMVC框架——最小化配置
作者:xingoo 发布时间:2022-02-16 02:38:16
为什么需要Spring MVC
最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面。
随着网站开发的深入,开始学习servlet开发,记得最痛苦的就是servlet返回网页的内容是字符串拼接的html页面,整不好就无法显示....
再到后来开学学习SSH,庞大的架构眼花缭乱。Struts繁杂的标签、hibernate搞不清楚的数据表,Spring不知道哪里搞错的bean。
最后随着发展,前端开始占有一席之地,nodejs风生水起,很多业务逻辑开始前置。再也看不到当初的bo、dao了,取而代之的是各种框架的mvvm,后台减轻压力只负责一些必要的逻辑。
到现在,好像web开发又发展到了一个阶段——前端由于Nodejs的作用,可以支撑一部分业务逻辑,通过转发代理,统一发往后台。后台通过url实现mvc,对性持久化、更深入的逻辑操作等等。Spring MVC在这里就起了很关键的作用....它通过Url拦截请求,自定义业务逻辑,可以返回自定义的view或者模型数据。
当然,上面的鬼扯都是片面的,不代表行业的发展,只是博主管中窥豹而已。
下面步入正题,说说Spring MVC的最小化配置,给入门的朋友引个路。
Spring MVC的最小化配置
需要的jar包
Spring framework spring-context
Spring framework spring-mvc
具体可以参考maven中的引用:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
<!-- 默认是/WEB-INF/applicationContext.xml -->
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/SpringMVC-servlet.xml</param-value>
<!-- 默认是/WEB-INF/[servlet名字]-servlet.xml -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
其中,必要的配置就是指定servlet和listener.
ContextLoaderListener指定了IOC容器初始化的方法
DispatcherServlet则定义了mvc的相关内容,并配置拦截的url,如上面所示,所有/开头的请求,都会通过SpringMVC这个servlet进行处理。
他们都需要一个xml文件,默认位置上面已经说过了。
applicationContext.xml
空的,反正咱也没用什么bean。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
</beans>
SpringMVC-servlet.xml
里面放一个扫描controller的配置即可。
<?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"
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-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="hello" />
</beans>
controller文件
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@RequestMapping("/hello")
public @ResponseBody String test() {
return "hello, world! This com from spring!";
}
}
总结一下:
1 两个maven依赖,spring-context;spring-mvc。maven就会自动下载所有关联的jar包,包括
spring-webmvc
spring-beans
spring-core
spring-expression
spring-web
spring-context
spring-aop
aopalliance
commons-logging
2 一个web.xml文件,配置了listener和servlet
3 两个spring相关的文件,applicationContext.xml和servletName-servlet.xml
4 一个controller文件,配置了拦截的url处理代码
有了这些准备工作,运行后输入:http://localhost:8080/SpringTest/hello
就能得到
hello, world! This com from spring!
这样的信息,恭喜你的SpringMVC搭起来了!
来源:http://www.cnblogs.com/xing901022/p/5240044.html
猜你喜欢
- 使用Postman传递arraylist数据给springboot起因:需要做一个批量删除的功能,后台接收一个ArrayList ids 。
- 以下实例演示了如何通过 Collections 类的 Collections.max() 和 Collections.min() 方法来查找
- 本文实例总结了MFC程序设计常用技巧。分享给大家供大家参考。具体如下:1.属性页的添加:创建对话框的类,该类要从CpropertyPage继
- 首先struts上传最大大小由两个地方决定. · struts.multipart.maxSize决定整个post的form最大是
- 两种解决方案前端查询字典数据然后前端转码后端查询字典值,然后再转码返回给前段。本文及时针对方案2 进行的改进目标:在需要返回给前段的字段上添
- 背景出现了一次生产事故,事情是这样的,我们有一个项目,Java访问数据库的框架使用的是MyBatis。然后一个业务员在系统中查询了一个订单,
- GridView设置如下:<asp:GridView ID="GridViewlb" runat="se
- 经测试,是环绕通知改变了返回值,切面方法需要有返回值,来代替被代理方法返回结果改成如下即可:@Around("point_upda
- 被kafka-client和springkafka版本坑上周刚刚欢天喜地的在linux上部了kafka,这周打算用spring-boot框架
- 在以往的 Tomcat 项目中,一直习惯用 Ant 打包,使用 build.xml 配置,通过 ant -buildfile 的方式在机器上
- 我就废话不多说了,大家还是直接看代码吧~//returnContent为获取到的返回参数System.out.println(returnC
- 之前文章介绍过了Fluent基本框架等,其中有几个重要的方法用到了IQuery和IUpdate对象。 这2个对象是FluentMybatis
- json格式的字符串与对象的互相转换Jackson 简介Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转
- 简介Android给我们提供了一种轻量级的异步任务类AsyncTask。该类中实现异步操作,并提供接口反馈当前异步执行结果及进度,这些接口中
- 一、引言之前小编讲了MP从入门到核心功能的使用,接下来这几天小编会把MP在实际项目中,一些常用的高级功能给记录一下。高级功能分为:逻辑删除、
- 在Thread中注入Bean无效在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务。而通过Spring注入
- 今天使用jenkins构建时,报以下错误[ERROR] Failed to execute goal on project saas20:
- 本章讲述:FileStream类的基本功能,以及简单示例;1、引用命名空间:using System.IO;2、注意:使用IO操作文件时,要
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- java字符串如何进行比较?我们可以根据内容和引用来比较Java中的String。它用于身份验证(通过 equals() 方法)、排序(通过