Spring-纯Java创建一个SSM【webapp】
纯Java搭建webapp
QuickStart
使用纯 Java 来搭建一个 SSM 环境,即在项目中,不存在任何 XML 配置,包括 web.xml
1创建一个Maven工程
引入依赖
<!-- TODO 【Java创建SSM】1、引入依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
2创建控制器,用于测试
controller
/**
* @Author Coder_Pans
* @Date 2022/11/23 21:48
* @PackageName:PACKAGE_NAME
* @ClassName: org.panstack.controller.HelloController
* @Description: TODO 【Java创建SSM】2、HelloController 用于测试
* @Version 1.0
*/
@Controller
public class HelloController {
// 注入Service
@Autowired
HelloService helloService;
@GetMapping("/hello")
@ResponseBody
public String hello(){
return helloService.hello();
}
}
Service
/**
* @Author Coder_Pans
* @Date 2022/11/23 22:14
* @PackageName:org.panstack.service
* @ClassName: HelloService
* @Description: TODO 【Java创建SSM】6、验证Service是否能被过滤
* @Version 1.0
*/
@Service
public class HelloService {
public String hello(){
return "hello java -> Ssm";
}
}
User实体类
/**
* @Author Coder_Pans
* @Date 2022/11/23 22:52
* @PackageName:org.panstack.pojo
* @ClassName: User
* @Description: TODO 用户实体类,用于测试json
* @Version 1.0
*/
public class User {
private String name;
// TODO Json修改时间格式
// @JsonFormat(pattern = "yyyy-MM-dd hh:mm")
private Date birthDay;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public User(String name, Date birthDay) {
this.name = name;
this.birthDay = birthDay;
}
public User() {
}
}
3配置Spring
工程创建成功之后,首先添加 Spring 的配置文件:
/**
* @Author Coder_Pans
* @Date 2022/11/23 21:53
* @PackageName:org.panstack.config
* @ClassName: SpringConfig
* @Description: TODO 【Java创建SSM】3、添加Spring配置类
* 这个配置类文件相当于applicationContext.xml
* @Version 1.0
*/
@ComponentScan(
basePackages = "org.panstack",
useDefaultFilters = true,
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
@Configuration
public class SpringConfig {
}
- @Configuration :注解表示这是一个配置类,在我们这里,这个配置的作用类似于 applicationContext.xml
- @ComponentScan: 注解表示配置包扫描,里边的属性和 xml 配置中的属性都是一一对应的,useDefaultFilters 表示使用默认的过滤器,然后又除去 Controller 注解,即在 Spring 容器中扫描除了 Controller 之外的其他所有 Bean
4配置SpringMVC
创建 springmvc 的配置文件:
/**
* @Author Coder_Pans
* @Date 2022/11/23 21:58
* @PackageName:org.panstack.config
* @ClassName: SpringMVCConfig
* @Description: TODO 【Java创建SSM】4、添加SpringMVC配置
* 这个配置类相当于spring-servlet.xml
* @Version 1.0
*/
@ComponentScan(basePackages = "org.panstack",
useDefaultFilters = false,
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class),
//TODO 【Java创建SSM】 6、将SpringConfig对Spring的配置加入WebInit一起启动
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)})
@Configuration
public class SpringMVCConfig extends WebMvcConfigurationSupport {
/**
* TODO 【Java创建SSM】7、解决静态资源过滤
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/");
}
/**
* TODO【Java创建SSM】9、配置解析jsp
* @param registry
*/
@Override
protected void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp().prefix("/jsp/").suffix(".jsp");
}
/**
* TODO【Java创建SSM】10、配置路径映射
* @param registry
*/
@Override
protected void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/hello3").setViewName("hello");
}
/**
* TODO 配置消息转换,解决时间格式
*/
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
ObjectMapper om = new ObjectMapper();
// 设置自己的格式
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));// TODO 全局修改时间格式
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(om);
converters.add(converter);
}
}
5配置web.xml
使用 Java 代码去代替 web.xml 文件,这里会用到 WebApplicationInitializer
/**
* @Author Coder_Pans
* @Date 2022/11/23 22:04
* @PackageName:org.panstack.config
* @ClassName: WebInit
* @Description: TODO 【Java创建SSM】5、配置原来的web.xml
* 这个配置类相当于web.xml
* @Version 1.0
*/
public class WebInit implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMVCConfig.class);// 注册mvc配置类
ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc", new DispatcherServlet(ctx));// 传入上下文ctx
springmvc.addMapping("/");
springmvc.setLoadOnStartup(1);// 添加一个启动时机
}
}
WebInit 的作用类似于 web.xml,这个类需要实现 WebApplicationInitializer 接口,并实现接口中的方法,当项目启动时,onStartup 方法会被自动执行,我们可以在这个方法中做一些项目初始化操作,例如加载 SpringMVC 容器,添加过滤器,添加 Listener、添加 Servlet 等。
注意:
由于我们在 WebInit 中只是添加了 SpringMVC 的配置,这样项目在启动时只会去加载 SpringMVC 容器,而不会去加载 Spring 容器,如果一定要加载 Spring 容器,需要我们修改 SpringMVC 的配置,在 SpringMVC 配置的包扫描中也去扫描 @Configuration 注解,进而加载 Spring 容器,还有一种方案可以解决这个问题,就是直接在项目中舍弃 Spring 配置,直接将所有配置放到 SpringMVC 的配置中来完成,这个在 SSM 整合时是没有问题的,在实际开发中,较多采用第二种方案,第二种方案,SpringMVC 的配置如下:
@Configuration
@ComponentScan(basePackages = "org.panstack")
public class SpringMVCConfig {
}
6最终pom.xml
<dependencies>
<!-- TODO 【Java创建SSM】1、引入依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- TODO 【Java创建SSM】8、解析jsp的依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 解析json依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.0</version>
</dependency>
</dependencies>
Spring-纯Java创建一个SSM【webapp】的更多相关文章
- 纯 CSS 创建一个三角形
[要求]:用纯CSS创建一个三角形的原理是什么? ♪ 答: 把上.左.右三条边隐藏掉(颜色设为 transparent) [实现]: #demo { width: 0; height: 0; bord ...
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- 使用IDEA创建一个SSM工程(非maven)
说在前面的话 直到现在从Eclipse向IDEA转的人越来越多,但是IDEA的项目创建让人摸不清头脑,因此这里我创建一个非maven的ssm工程,供大家练练手,进一步的了解IDEA在项目中的使用. 创 ...
- spring纯java注解式开发(一)
习惯了用XML文件来配置spring,现在开始尝试使用纯java代码来配置spring. 其实,spring的纯java配置,简单来说就是将bean标签的内容通过注解转换成bean对象的过程,没什么神 ...
- 如何用java创建一个jdbc程序
第一个jdbc程序 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和 ...
- 【Spring Boot】创建一个简单的Spring Boot的 Demo
走进Spring Boot 文章目录 走进Spring Boot 环境搭建 新建Spring Boot项目 开始创建项目 配置JDK版本 和 Initializr Service URL 配置Proj ...
- Java 创建一个简单的验证码图片
代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...
- [java]创建一个默认TreeMap() key为什么不能为null
本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 先看一下 TreeMap 的 put(K key, V value) public TreeMap() ...
- 教你用纯Java实现一个网页版的Xshell(附源码)
前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:Gat ...
- 怎样使用纯CSS3创建一个简单的五角星图形
我们能够使用SVG.Canvas.CSS3或者背景图片来实现五角星图案及其悬停效果. CSS3引入的伪元素和变换特性使得实现五角星图形很easy,而且能够结合渐变实现更为美丽的效果.因此使用图片实现五 ...
随机推荐
- 将字符串数组String[]转换成List的三种方法
通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常. String[] strArray = new String[2]; Li ...
- NX环境变量设置脚本
1 @ECHO OFF 2 TITLE NX 环境变量设置 3 color 3f 4 :MENU 5 CLS 6 ECHO. NX环境变量设置工具 7 ECHO.******************* ...
- js遍历出数组重复的数据,及重复的个数(简单有效)
const res={} ["s","s","a"].forEach((key)=>{ if(res[key]){ res[key]+ ...
- Java根据经纬度计算两点之间的距离
public final class DistanceUtils { /** * 地球半径,单位 km */ private static final double EARTH_RADIUS = 63 ...
- Windows11安装Hadoop3.3.2
Windows11安装Hadoop3.3.2 JDK 安装 Hadoop的Java版本https://cwiki.apache.org/confluence/display/HADOOP/Hadoop ...
- TypeScript系列 -> 遇到报错 Cannot find name ‘console‘. Do you need to change your target library?ging the ‘lib‘ compiler option
学习ts遇到的报错 Cannot find name 'console'. Do you need to change your target library?ging the 'lib' compi ...
- Loadrunner——调试及脚本编译
调试一般用于运行代码是出现的错误. loadrunner调试方式:断点.单步跟踪.日志输出.值查看器等, 断点设置 断点插入的位置:非空行或非语句的起始,简单来说呢就是断点打在函数前(取消断点就直接在 ...
- Idea提交文件时,添加不需要提交的文件至.gitignore文件中
1.在Idea中,依次打开File ---->Setting ---> Editor --->File Types 2.在当前编辑栏下方找到Ignore files and fold ...
- vue创建项目的命令
一.首先下载node环境 二.全局安装vue-cli cnpm i -g @vue/cli 这里一定要注意是vue/cli,而不是vue-cli 三.新建文件夹,打开cmd命令 1.vue creat ...
- 杭电OJ刷题指南(ACM)
杭州电子科技大学Oj是著名的算法竞赛刷题网站!!