使用java代码代替xml实现SSM教程

网友投稿 247 2022-09-10


使用java代码代替xml实现SSM教程

目录1.在IDEA中创建一个普通的maven项目2.添加Spring配置3.添加SpringMVC配置5.测试5.1创建HelloController类5.2创建HelloController2类5.3路径映射6.jsON配置7.总结

SpringBoot推荐开发者使用java配置来搭建框架,SpringBoot中大量的自动化配置都是通过Java代码配置实现的,而不是XML配置,同理,我们自己也可以使用纯Java来搭建一个SSM环境,即在项目中不存在任何XML配置,包括web.xml

环境要求:

Tomact版本必须在7以上

1.在IDEA中创建一个普通的maven项目

在pom.xml加入项目中需要用到的依赖

xmlns:xsi="http://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">

4.0.0

com.xiao.ssm

SSM-demo

1.0-SNAPSHOT

war

8

8

2.2

8888

UTF-8

org.springframework

spring-webmvc

5.2.12.RELEASE

javax.servlet

javax.servlet-api

4.0.1

provided

javax.servlet.jsp

jsp-api

2.2

org.apache.tomcat.maven

tomcat7-maven-plugin

${tomcat.version}

${webserver.port}

/${project.artifactId}

${yCdUffizuAproject.build.sourceEncoding}

central

https://maven.aliyun.com/nexus/content/repositories/central

central

https://maven.aliyun.com/nexus/content/repositories/central

xmlns:xsi="http://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">

4.0.0

com.xiao.ssm

SSM-demo

1.0-SNAPSHOT

war

8

8

2.2

8888

UTF-8

org.springframework

spring-webmvc

5.2.12.RELEASE

javax.servlet

javax.servlet-api

4.0.1

provided

javax.servlet.jsp

jsp-api

2.2

org.apache.tomcat.maven

tomcat7-maven-plugin

${tomcat.version}

${webserver.port}

/${project.artifactId}

${yCdUffizuAproject.build.sourceEncoding}

central

https://maven.aliyun.com/nexus/content/repositories/central

central

https://maven.aliyun.com/nexus/content/repositories/central

2.添加Spring配置

创建SpringConfig.java文件

package com.xiao.config;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.FilterType;

import org.springframework.stereotype.Controller;

/**

* @author xiaoss

* @Configuration注解标识该类是一个配置类,作用类似于:applicationContext.xml文件

* @ComponentScan注解标识配置包扫描,useDefaultFilters表示使用默认的过滤器,excludeFilters里面的配置表示除去Controller里面的注解,

* 即项目启动时候,spring容器只扫描除了Controller类之外的所有bean

* @date 2021年10月29日 16:43

*/

@Configuration

@ComponentScan(basePackages = "com.xiao",useDefaultFilters = true,

excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})

public class SpringConfig {

}

3.添加SpringMVC配置

创建SpringMVCConfig.java文件

package com.xiao.config;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.FilterType;

import org.springframework.stereotype.Controller;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

/**

* @author xiaoss

* @date 2021年10月29日 16:56

*/

@Configuration

//@ComponentScan(basePackages = "com.xiao",useDefaultFilters = true,

// excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})

@ComponentScan(basePackages = "com.xiao")

public class SpringMVCConfig extends WebMvcConfigurationSupport {

/**

* 配置静态资源过滤,相当于 >

* @param registry

*/

@Override

protected void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/js/**").addResourceLocations("classpath:/");

}

/**

* 配置视图解析器

* @param registry

*/

@Override

protected void configureViewResolvers(ViewResolverRegistry registry) {

registry.jsp("/jsp/",".jsp");

}

/**

* 路径映射

* @param registry

*/

@Override

protected void addViewControllers(ViewControllerRegistry registry) {

registry.addViewController("/hello3").setViewName("hello");

}

/**

* json转换配置

* @param converters

*/

@Override

protected void configureMessageConverters(List> converters) {

FastJsonHttpMessageConverter converter=new FastJsonHttpMessageConverter();

converter.setDefaultCharset(Charset.forName("UTF-8"));

FastJsonConfig fastJsonConfig=new FastJsonConfig();

fastJsonConfig.setCharset(Charset.forName("UTF-8"));

converter.setFastJsonConfig(fastJsonConfig);

converters.add(converter);

}

}

4.配置web.xml

创建WebInit.java文件

package com.xiao.config;

import org.springframework.web.WebApplicationInitializer;

import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletRegistration;

/**

* @author xiaoss

* @date 2021年10月29日 17:13

*/

public class WebInit implements WebApplicationInitializer {

@Override

public void onStartup(ServletContext servletContext) throws ServletException {

//首先来加载SpringMVC的配置文件

AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();

ctx.register(SpringMVCConfig.class);

//添加DispatcherServlet

ServletRegistration.Dynamic springmvc=servletContext.addServlet("springmvc",new DispatcherServlet(ctx));

//给DispatcherServlet添加路径映射

springmvc.addMapping("/");

//给DispatcherServlet添加启动时机

springmvc.setLoadOnStartup(1);

}

}

WebInit的作用类似于web.xml,这个类需要实现WebApplicationInitializer接口,并实现其方法,当项目启动时,onStartup方法会被自动执行,我们可以在这里进行项目初始化操作,如:加载SpringMVC容器,添加过滤器,添加Listener,添加Servlet等

注:

由于在onStartup里面只加载了springmvc配置,没有加载spring容器,如果要加载Spring容器

方案一:

修改springmvc配置,在配置的包扫描中也去扫描@Configuration注解

推荐 方案二:

去掉springConfig文件,讲所有的配置都放到springmvc里面

5.测试

5.1创建HelloController类

package com.xiao.control;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* @author xiaoss

* @date 2021年10月29日 17:00

*/

@RestController

public class HelloController {

@GetMapping("/hello")

public String hello(){

return "hello";

}

}

运行结果:

5.2创建HelloController2类

package com.xiao.control;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

/**

* @author xiaoss

* @date 2021年10月29日 22:17

*/

@Controller

public class HelloController2 {

@GetMapping("hello2")

public String hello2(){

return "hello";

}

}

运行结果:

5.3路径映射

6.JSON配置

SpringMVC可以接收json参数,也可以返回json参数,这一切依赖于HttpMessageConverter

HttpMessageConverter可以将一个json字符串转为对象,也可以将一个对象转为json字符串,实际上它的底层还是依赖具体的json库

SpringMVC中默认提供了Jackson和gson的HttpMessageConverter,分别是:

MappingJackson2HttpMessageConverter

GsonHttpMessageConverter

7.总结

1.本项目需要在idea中配置外部的tomact才可运行

2.自己也尝试在pom.xml中配置tomact插件,最后发现不行

3.使用mave插件打包不行,因为他会找web.xml,所以找不到就会打包失败


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:计算机网络原理【七】之 无线与移动网络(计算机网络原理概念)
下一篇:计算机网络与通信技术——第一章概述单元测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~