java框架做的项目实例_纯手写SpringMVC到SpringBoot框架项目实战

本文详细介绍了如何从头开始手写一个SpringBoot项目,包括引入相关依赖、配置Spring MVC和Spring容器、创建DispatcherServlet、实现Service和Controller层,以及展示JSP页面的过程。通过这个实战,你可以了解到SpringBoot简化开发、自动配置的特点。
摘要由CSDN通过智能技术生成

引言

Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

通过这种方式,springboot是一个快速整合第三方框架的,简化了xml的配置,项目中再也不包含web.xml文件了,完全使用注解来完成操作的,并且内部自带tomcat启动。直接使用jar文件运行即可。

好了大概了解了springboot有啥用处,本章节主要目的就是仿造一个springboot整合jsp的小实战。下面开始代码演示了。

1.导入相关依赖

创建项目之后需要引入tomcat,springmvc,spring-web,jsp相关的jar包。

代码如下:

org.apache.tomcat.embed

tomcat-embed-core

8.5.34

org.apache.tomcat

tomcat-jasper

8.5.16

org.springframework

spring-web

5.0.10.RELEASE

compile

org.springframework

spring-webmvc

5.0.10.RELEASE

compile

2.加载spring mvc的相关配置信息

需要创建一个springmvc相关配置类继承WebMvcConfigurationSupport ,这里只配置一个springmvc视图解析器。

代码如下:

//表示这是一个配置类,配置

@Configuration

//表示配置视图解析器,开启注解的相关配置,以及等等。

@EnableWebMvc

//表示包扫描

@ComponentScan(basePackages = {"springboot.controller"})

public class WebConfig extends WebMvcConfigurationSupport {

/**

* 配置springMVC视图解析器

*/

@Bean

public ViewResolver viewResolver() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

//配置前缀

viewResolver.setPrefix("/WEB-INF/views/");

//配置后缀

viewResolver.setSuffix(".jsp");

//可以在jsp页面中通过${}访问beans

viewResolver.setExposeContextBeansAsAttributes(true);

return viewResolver;

}

}

@Configuration:表示这是一个配置类,配置。

@EnableWebMvc:开启注解的相关配置(配置视图解析器,以及)等等。

@ComponentScan:表示包扫描。

viewResolver.setExposeContextBeansAsAttributes(true):jsp页面可以使用el表达式。

3.加载spring容器相关配置信息

创建一个SpringBeanScanConfig配置类,这个类主要是扫描service和dao层的,代码如下:

//表示配置类

@Configuration

//如果写了dao层,那么这里也需要扫描一下dao层

@ComponentScan("springboot.service")

public class SpringBeanScanConfig{

}

这个类目前什么都不需要做。

4.加载springMVC的dispatcherservlet

创建一个加载SpringMVC的DispatcherServlet的类。

代码如下:

public class DispatcherServletWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

/**

* 加载spring容器配置信息

* @return

*/

@Override

protected Class>[] getRootConfigClasses() {

return new Class[] {Service_DaoConfig.class};

}

/**

* 加载springmvc配置信息

* @return

*/

@Override

protected Class>[] getServletConfigClasses() {

return new Class[]{WebConfig.class};

}

/**

* springmvc映射 拦截url所有请求"/"

* @return

*/

@Override

protected String[] getServletMappings() {

return new String[]{"/"};

}

}

解释:

getRootConfigClasses():表示加载spring容器配置信息

getServletConfigClasses():表示加载springmvc配置信息

getServletMappings():表示springmvc映射 拦截url所有请求"/"

下面代码就容易理解了。

5.service层

在service层创建一个IndexService业务类

代码如下:

@Service

public class IndexService {

public String show() {

return "我是service层";

}

}

controller层

代码如下:

@Controller

public class IndexContrller {

@Autowired

private IndexService indexService;

/**

* value:访问地址

* produces:解决乱码问题

* @return

*

*/

@RequestMapping(value = "/index1", produces = "text/html;charset=UTF-8")

@ResponseBody

public String index1() {

return "手写springboot。。。";

}

@RequestMapping(value = "/index2", produces = "text/html;charset=UTF-8")

public String index2(Model model) {

String str = indexService.show();

model.addAttribute("str",str);//返回到jsp页面显示数据

return "springboot";

}

}

这里我们写了2个方法,index1()方法是返回json字符串形式,index2是跳转jsp页面并且带了一个str参数返回在jsp页面显示的。

7.jsp页面

pageEncoding="UTF-8"%>

springboot

这是一个手写的springboot框架

这里显示后台返回的数据为:【${str}】

${str}:这个表示后台带了一个str参数返回到jsp页面的,值应该为【我是service层】

8.启动类

这里就直接贴代码了,注释都写在代码中了。

代码如下:

public class SpringBootApp {

public static void main(String[] args) throws LifecycleException, ServletException {

// 创建Tomcat容器对象

Tomcat tomcatServer = new Tomcat();

// 设置端口号

tomcatServer.setPort(8080);

// 读取项目路径 加载静态资源

StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath());

// 禁止重新载入

ctx.setReloadable(false);

// class文件读取地址

File additionWebInfClasses = new File("target/classes");

// 创建WebRoot

WebResourceRoot resources = new StandardRoot(ctx);

// tomcat内部读取Class执行(/WEB-INF/classes虚拟出来的路劲)

resources.addPreResources(

new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));

tomcatServer.start();

// 异步等待请求执行

tomcatServer.getServer().await();

}

}

9.测试结果

启动程序看控制台显示加载情况:

a522357b71342b57bd1fe6fa90b542ad.png

以上创建的Service_DaoConfig和WebConfig2个配置类都加载成功。

输入地址:http://localhost:8080/index1显示为:“手写springboot。。。”

如图:

0800fca42aab1fe4917352d076408992.png

输入地址:http://localhost:8080/index2显示为:“这是一个手写的springboot框架 这里显示后台返回的数据为:【我是service层】”

如图:

c37a9ddc8b5d18ec2fda285f2ee50fc7.png

总结

springboot主要特点为:

1. 创建独立的Spring应用程序

2. 嵌入的Tomcat,无需部署WAR文件

3. 简化Maven配置

4. 自动配置Spring

5. 提供生产就绪型功能,如指标,健康检查和外部配置

6. 绝对没有代码生成并且对XML也没有配置要求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值