springboot推荐开发者使用java配置来搭建框架,springboot中大量的自动化配置都是通过java代码配置实现的,而不是xml配置,同理,我们自己也可以使用纯java来搭建一个ssm环境,即在项目中不存在任何xml配置,包括web.xml
环境要求:
tomact版本必须在7以上
在pom.xml加入项目中需要用到的依赖
<?xml version="1.0" encoding="utf-8"?><project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="/d/file/titlepic/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.xiao.ssm</groupid> <artifactid>ssm-demo</artifactid> <version>1.0-snapshot</version> <packaging>war</packaging> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <tomcat.version>2.2</tomcat.version> <webrver.port>8888</webrver.port> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> <dependencies> <!--引入springmvc依赖--> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>5.2.12.relea</version> </dependency> <!--引入rvlet依赖--> <!--scope作用域: 1.compile,默认的scope(作用域),表示 dependency 都可以在生命什么什么像什么什么造句周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布 2.provided,跟compile相似,但是表明了dependency 由jdk或者容器提供,例如rvlet ap和一些java ee apis。这个scope 只能作用在编译和测试时,同时没有传递性 3.runtime,表示dependency不作用在编译时,但会作用在运行和测试时,如jdbc驱动,适用运行和测试阶段 4.test,表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布 5.system,跟provided 相似,但是在系统中要以外部jar包的形式提供,maven不会在repository查找它 --> <dependency> <groupid>javax.rvlet</groupid> <artifactid>javax.rvlet-api</artifactid> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupid>javax.rvlet.jsp</groupid> <artifactid>jsp-api</artifactid> <version>2.2</version> </dependency> </dependencies> <build> <plugins> <!-- tomcat7插件 --> <plugin> <groupid>org.apache.tomcat.maven</groupid> <artifactid>tomcat7-maven-plugin</artifactid> <version>${tomcat.version}</version> <configuration> <port>${webrver.port}</port> <path>/${project.artifactid}</path> <uriencoding>${project.build.sourceencoding}</uriencoding> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>central</id> <url>https://maven.aliyun.com/nexus/content/repositories/central</url> </repository> </repositories> <pluginrepositories> <pluginrepository> <id>central</id> <url>https://maven.aliyun.com/nexus/content/repositories/central</url> </pluginrepository> </pluginrepositories></project>
创建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注解标识配置包扫描,udefaultfilters表示使用默认的过滤器,excludefilters里面的配置表示除去controller里面的注解, * 即项目启动时候,spri休要丢人现眼ng容器只扫描除了controller类之外的所有bean * @date 2021年10月29日 16:43 */@configuration@componentscan(bapackages = "com.xiao",udefaultfilters = true, excludefilters = {@componentscan.filter(type = filtertype.annotation,class = controller.class)})public class springconfig {}
创建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.rvlet.config.annotation.resourcehandlerregistry;import org.springframework.web.rvlet.config.annotation.viewresolverregistry;import o生物机电rg.springframework.web.rvlet.config.annotation.webmvcconfigurationsupport;/** * @author xiaoss * @date 2021年10月29日 16:56 */@configuration//@componentscan(bapackages = "com.xiao",udefaultfilters = true,// excludefilters = {@componentscan.filter(type = filtertype.annotation,class = controller.class)})@componentscan(bapackages = "com.xiao")public class springmvcconfig extends webmvcconfigurationsupport { /** * 配置静态资源过滤,相当于 <mvc:resources mapping="/**" location="/"></> * @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").tviewname("hello"); } /** * json转换配置 * @param converters */ @override protected void configuremessageconverters(list<httpmessageconverter<?>> converters) { fastjsonhttpmessageconverter converter=new fastjsonhttpmessageconverter(); converter.tdefaultchart(chart.forname("utf-8")); fastjsonconfig fastjsonconfig=new fastjsonconfig(); fastjsonconfig.tchart(chart.forname("utf-8")); converter.tfastjsonconfig(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.rvlet.dispatcherrvlet;import javax.rvlet.rvletcontext;import javax.rvlet.rvletexception;import javax.rvlet.rvletregistration;/** * @author xiaoss * @date 2021年10月29日 17:13 */public class webinit implements webapplicationinitializer { @override public void onstartup(rvletcontext rvletcontext) throws rvletexception { //首先只有你黄绮珊来加载springmvc的配置文件 annotationconfigwebapplicationcontext ctx=new annotationconfigwebapplicationcontext(); ctx.register(springmvcconfig.class); //添加dispatcherrvlet rvletregistration.dynamic springmvc=rvletcontext.addrvlet("springmvc",new dispatcherrvlet(ctx)); //给dispatcherrvlet添加路径映射 springmvc.addmapping("/"); //给dispatcherrvlet添加启动时机 springmvc.tloadonstartup(1); }}
webinit的作用类似于web.xml,这个类需要实现webapplicationinitializer接口,并实现其方法,当项目启动时,onstartup方法会被自动执行,我们可以在这里进行项目初始化操作,如:加载springmvc容器,添加过滤器,添加listener,添加rvlet等
注:
由于在onstartup里面只加载了springmvc配置,没有加载spring容器,如果要加载spring容器
方案一:
修改鹅蛋脸型适合什么发型springmvc配置,在配置的包扫描中也去扫描@configuration注解
推荐 方案二:
去掉springconfig文件,讲所有的配置都放到springmvc里面
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 */@restcontrollerpublic class hellocontroller { @getmapping("/hello") public string hello(){ return "hello"; }}
运行结果:
package com.xiao.control;import org.springframework.stereotype.controller;import org.springframework.web.bind.annotation.getmapping;/** * @author xiaoss * @date 2021年10月29日 22:17 */@controllerpublic class hellocontroller2 { @getmapping("hello2") public string hello2(){ return "hello"; }}
运行结果:
springmvc可以接收json参数,也可以返回json参数,这一切依赖于httpmessageconverter
httpmessageconverter可以将一个json字符串转为对象,也可以将一个对象转为json字符串,实际上它的底层还是依赖具体的json库
springmvc中默认提供了jackson和gson的httpmessageconverter,分别是:
mappingjackson2httpmessageconverter
gsonhttpmessageconverter
1.本项目需要在idea中配置外部的tomact才可运行
2.自己也尝试在pom.xml中配置tomact插件,最后发现不行
3.使用mave插件打包不行,因为他会找web.xml,所以找不到就会打包失败
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 01:33:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/b083ca0011c7c6aebfa69412623c1505.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:使用java代码代替xml实现SSM教程.doc
本文 PDF 下载地址:使用java代码代替xml实现SSM教程.pdf
留言与评论(共有 0 条评论) |