ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Spring Boot整合Java web项目

2022-03-18 18:34:26  阅读:152  来源: 互联网

标签:web Java index spring jsp mode Spring home


image.png

1:Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring boot能简化我们之前采用SpringMVC+Spring+Mybatis框架进行开发的过程。

2:在以往我们采用SpringMVC+Spring+Mybatis框架进行开发的时候,搭建和整合三大框架,我们需要做很好工作,比如配置web.xml,配置Spring,配置Mybatis,并将它们整合在一起等;

而Spring boot框架对此开发过程进行了革命性的颠覆,抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程.

3:所以采用Spring Boot可以非常容易和快速的创建基于Spring框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控也变简单了。

4:正因为Spring Boot它化繁为简,让开发变得极其简单和快捷,所以在业界备受关注。Spring Boot在国内的关注趋势也日渐超过Spring.

特性:

1:能够快速创建基于Spring的应用程序。(简化配置)

2:能够直接使用java的main方法启动内嵌的Tomcat,Jetty服务器运行Spring Boot程序,不需要部署war包文件。

3:提供约定的starter POM来简化来简化Maven配置,让Maven配置变得简单。

4:根据项目的maven依赖配置,Spring Boot自动配置Spring,SpringMVC等其它开源框架。

5:提供程序的健康检查等功能。(检查内部的运行状态等)

6:基本可以完全不使用xml配置文件,采用注解配置。(或者默认约定的配置,代码中已经实现)

Spring Boot搭建web项目

image.png

好了废话,不多说,下面正式开始单间一个web项目,使用的工具是eclipse来进行搭建,创建一个maven工程。下面开启贴图模式,这前面的过程都是非常的简单,网上也有大量的参考资料,这里为了保证一个完整性,开始贴图。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!

首先就是很简单,右击–>new–>project 选择maven project

image.png

然后选择一个默认的配置即可,一般包含的文件都会在里面。image.png

这里填写好group id其实就是包名,后面也可以更改的,还有artifiact id就是工程名称,然后单击完成,就创建一个简单的maven工程。image.png

具体的工程目录如下所示 image.png

按照上面的流程建好了工程之后,可以查看到具体的工程目录如下,这里作为一个web项目还缺少如下相关目录用来存放web文件和配置文件。

src/main/resources  //这个文件夹中存放的是配置文件例如application.properties 配置文件

src/main/webapp     //这个文件夹中存放的是前端的文件html,jsp、css

这些文件夹手动添加即可,添加完成之后,具体得到的如下图所示:image.png

要想把这个项目跑起来,需要做一下几个步骤:

1. 首先需要配置一下pom.xml文件,引入spring-boot的相关依赖文件 ,这个是最基本的包,里面包含了运行的相关组件,例如tomcat,以及其他的jar包

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
</parent>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

这样就能启动一个spring-boot的web项目,其中内嵌了相关的tomcat服务器,接下里是至关重要的,因为如果不引入下面的jar包,在调整jsp的页面的时候直接看到的是变成了下载的模式,笔者也是在这个地方郁闷了半,百度上找了好多的例子,大部分都没讲到这个方面,故而在这里重点说明一下。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!

<!-- JSTL for JSP  spring boot搭建web项目,跳转到jsp一定要添加下面的jar包,否则出现跳转的时候,变成下载的功能,保存该页面-->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
	</dependency>

	<!-- Need this to compile JSP -->
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
		<scope>provided</scope>
	</dependency>

引入了这个jar之后呢,才能对jsp进行解析,编译,到这里之后,相关的依赖基本上都算引入完成。接下来要做的是配置application.properties配置文件,这里面也是有一堆坑在这里。

默认的情况下,这个配置文件是不需要配置的,服务器也可以启动起来。但是很多同学在搭建玩项目之后,进行的跳转的时候,不是报找不到页面,就是解析错误。

因为在这个配置文件中需要指定一下需要跳转的jsp页面的路径,即,具体在哪个文件夹下面,添加如下配置:

#默认的位置是src/main/webapp 这里可以更换,比如/page/ 那么目录就变成了src/main/webapp/pages
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

这里面还有一个坑,在新版本的spring boot中是按上面的配置,但是在老的版本中是如下的用法,名称不一样,这里需要注意一下,否则对于新学者来说,又要懵逼半天了…

这里面还有一个坑,在新版本的spring boot中是按上面的配置,但是在老的版本中是如下的用法,名称不一样,这里需要注意一下,否则对于新学者来说,又要懵逼半天了...

spring.view.prefix=/
spring.view.suffix=.jsp

然后需要创建jsp的页面了,在添加的源码包src/main/webapp的下面添加jsp文件,注意,webapp是默认的路径,如果想继续分类,则可以在该文件夹下面进行添加,比如说添加一个pages文件夹,jsp文件都放在这里面,那么spring.mvc.view.prefix=/pages/ 否则会找不到对应的文件。大体的目录结构如下所示:

|----src/main/webapp
 	|------index.jsp
	|------pages
	  	|----page.index

对于jsp页面中,就写入一点简单的测试语句就行了

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    hello world!!!
    name=${name } welcome!
</body>
</html>

好了,上面的步骤都完成之后,这里,只要编写简单的Controller即可,这里面提供了两个跳转路径一个是/home,一个是/home/page,一个是携带返回值,一个没有返回相应结果。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!

@Controller
public class HomeController {

    @RequestMapping(value="/home")
    public String home(){
        System.out.println("redirect to home page!");
        return "index";
    }	
    @RequestMapping(value="/home/page")
    @ResponseBody
    public ModelAndView goHome(){
        System.out.println("go to the home page!");
        ModelAndView mode = new ModelAndView();
        mode.addObject("name", "zhangsan");
        mode.setViewName("index");
        return mode;
    }
}

然后在App类中,添加如下代码:

@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class);
    }
}

写好上面的Controller之后,在App类上面右击,选择Run Application执行main函数,看到控制台输出如下,说明spring boot启动成功
image.png

然后打开浏览器,输入地址http://127.0.0.1:8080/home/page

看到返回结果如下所示,则表示跳转成功:image.png

Controller的几种返回值

有点时候采用Controller返回跳转到前端页面的时候,经常会出现一些问题,有些同学搞不清楚具体的返回啥,这里做一个小结。

1.ModelAndView 这个也是用的最多的类型,通过构造函数可以指定返回页面的名称,也可以通过方法setViewName()来设置需要跳转的页面,例如如下的例子,这里面不但返回index页面同时,携带参数name过来。通过addObject()可以把你需要返回的参数值设置进去,返回给前端。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!

@RequestMapping(value="/home/page")
@ResponseBody
public ModelAndView goHome(){
	System.out.println("go to the home page!");
	ModelAndView mode = new ModelAndView();
	mode.addObject("name", "zhangsan");
	mode.setViewName("index");
	return mode;
}

也可以直接通过构造函数返回,两者的效果是一样的

@RequestMapping(value="/home/mv")
@ResponseBody
public ModelAndView goHomeByModeAndview(){
	System.out.println("go to the home page!");
	ModelAndView mode = new ModelAndView("index");
	mode.addObject("name", "zhangsan");
	return mode;
}

  1. String 类型,这个也是使用非常普遍的方法

     @RequestMapping(value="/home")
     public String home(){
     	System.out.println("redirect to home page!");
     	return "index";
     }
    
    

首先看这个方法,啥也没干,直接返回了字符串"index",返回的字符串表示一个视图名称,直接返回到index.jsp的页面。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!

但是如果添加了如下的参数,此时返回的就不是视图名称了而是作为字符串,index,直接显示在页面上面。

@RequestMapping(value="/home/res")
@ResponseBody
public String homeRes(){
	System.out.println("redirect to home page!");
	return "index";
}

  1. Model其实是一个接口,它的实现类是extendedModeMap类继承了ModelMap,具体可以参考modeMap

主要作用用于传递控制方法的处理数据到前端 ,有点类似request的域的作用,比如setAttribute的方法来设置。

4.Map对象,其实采用的就是key-value的形式,例如下面方法

@RequestMapping(value="/home/map")
public Map<String,String> testMap(){

	Map<String, String> map = new HashMap<String, String>();
	map.put("name", "lisi");
	return map;
}

这里响应的view等同于请求的view,等同于返回null,等同于void类型。

  1. void的类型,即没有返回值,响应的页面就是请求的页面 响应的地址/home/void就是这个

     @RequestMapping(value="/home/void")
     public void testVoid(){
         ModelAndView mode= new ModelAndView();
         mode.addObject("name","wagnwu");
     }
    
    

遇到的坑坑洼洼小结

  1. 如果有jsp文件的话,一定要进入相关的jar包依赖,否则,无法解析

  2. 如果只配置了spring boot的一个参数,@SpringBootApplication 此时,一定要把对应的Controller和其他组件放在这个包的路径以及子包的路径下面,否则注解无法被解析到或者手动配置扫描路径

3. 在配置文件application.properties配置的选项没有生效的情况下,注意查看一下是否是新老版本的区别,导致配置的名称不同

标签:web,Java,index,spring,jsp,mode,Spring,home
来源: https://blog.csdn.net/javase1086/article/details/123581715

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有