中工信融做网站怎么样,一个基于php网站开发课题设计的业务流程描述,网站运营方案书,可以做网站的公司一、简介
提起Java不得不说的一个开发场景就是Web开发#xff0c;也是Java最热门的开发场景之一#xff0c;说到Web开发绕不开的一个技术就是JSP#xff0c;因为目前市面上仍有很多的公司在使用JSP#xff0c;所以本文就来介绍一下Spring Boot 怎么集成JSP开发#xff0c…一、简介
提起Java不得不说的一个开发场景就是Web开发也是Java最热门的开发场景之一说到Web开发绕不开的一个技术就是JSP因为目前市面上仍有很多的公司在使用JSP所以本文就来介绍一下Spring Boot 怎么集成JSP开发以及生产环境的详细部署方法。
二、集成JSP
开发环境
Spring Boot 2.0.4 RELEASETomcat 9.0.10IDEAIntellij IDEA简称下文统一使用2018.2Windows 10
JSP集成步骤
创建JSP目录application.properties配置Jsp信息pom.xml添加依赖组件编写Spring MVC代码运行程序
具体集成方法如下
1.创建JSP目录
在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面如下图 2.application.properties配置Jsp信息
application.properties为全局配置文件里面可以设置很多信息比如设置日志、设置缓存、设置Spring、Spring SESSION等信息我们本文只需要设置JSP的目录文件以及文件后缀代码如下
spring.mvc.view.prefix/WEB-INF/jsp
spring.mvc.view.suffix.jsp
更多application.properties设置信息查看官方文档https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties
3.pom.xml添加JSP配置
在pom.xml需要添加3个组件
spring-boot-starter-web 用于运行web项目jstl JavaServer Pages Standard Tag LibraryJSP标准标签库用于程序中解析JSPtomcat-embed-jasper 内置tocat对Jsp支持的依赖用于编译Jsp
具体代码如下
!--web支持--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency!--JavaServer Pages Standard Tag LibraryJSP标准标签库--
dependencygroupIdjavax.servlet/groupIdartifactIdjstl/artifactId
/dependency!--内置tocat对Jsp支持的依赖用于编译Jsp--
dependencygroupIdorg.apache.tomcat.embed/groupIdartifactIdtomcat-embed-jasper/artifactIdscopeprovided/scope
/dependency
注意tomcat-embed-jasper的scope作用域值为provided表示打包的时候不用打包进去其他设备会提供如果打包进去会和外部Tomcat提供的jar冲突导致项目启动失败。
scope作用域值列表代表含义解释如下:
compile默认值 他表示被依赖项目需要参与当前项目的编译还有后续的测试运行周期也参与其中是一个比较强的依赖。打包的时候通常需要包含进去test依赖项目仅仅参与测试相关的工作包括测试代码的编译和执行不会被打包例如junitruntime表示被依赖项目无需参与项目的编译不过后期的测试和运行周期需要其参与。与compile相比跳过了编译而已。例如JDBC驱动适用运行和测试阶段provided打包不会包含进去别的设施会提供。事实上该依赖理论上可以参与编译测试运行等周期。相当于compile但是打包阶段做了exclude操作system从参与度来说和provided相同不过被依赖项不会从maven仓库下载而是从本地文件系统拿。需要添加systemPath的属性来定义路径
4.编写Spring MVC代码
经过前3步的配置项目配置部分已经完成的差不多了接下来就是代码的编写了代码的编写和Spring MVC一样分为两部分Java类编写与标识注解JSP模板创建与编写。为了更好的演示Spring Boot 的功能我们会尽可能的简化业务逻辑在这个示例中我们创建一个Cat类设置标签hi”Hello Cat”在页面输出标签即可。
a).Cat.java代码
package com.hellospringboot.hellospringboot;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
Controller
RequestMapping(/cat) //创建路由规则http://xxxx/cat
public class Cat {/*** 默认路由方法** return*/RequestMapping()public ModelAndView index() {ModelAndView modelAndView new ModelAndView(/index); //设置对应JSP的模板文件modelAndView.addObject(hi, Hello,Cat); //设置${hi}标签的值为Hello,Catreturn modelAndView;}
}
Spring MVC注解解读
Controller 标识在一个类上标识的类就是Spring MVC的控制器类分发处理器会扫描使用了该注解的类是否使用了RequestMapping 注解Controller只是定义了一个控制器类只用使用了RequestMapping 注解才是真正处理请求的处理器RequestMapping 标识在类或者方法上用来处理请求地址的注解一共有6个属性value 对应请求的实际地址method 请求的类型:get、post、put、delete 等ex:RequestMapping(value “/test”, method RequestMethod.PUT)consumes 指定请求上的内容类型比如application/json、text/html等produces 指定返回的数据类型类型必须是Request Headers中accept包含的类型params 过滤请求只有请求中包含某个参数才会执行比如RequestMapping(value “”,params “flag”)只有参数中包含flag才会执行不然不能访问http://localhost:8080/cat?trueflag这个地址是访问不到的正确的地址是http://localhost:8080/cat?flagtrue才可以正常访问headers 和params类似只有请求headers里面包含某个key才可以访问方法
b).JSP端代码
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
h1${hi}
/h1
/body
/html
这个jsp只做了一件事把java类里面的${hi}标签的值显示出来。
5.运行程序
到此为止如果您使用的是IDEA开发工具那么现在就可以运行调试程序了直接运行Index.jsp或者启动文件或者启动文件Application.java即可然后在浏览器输入http://localhost:8080/cat 即可查看。
三、生产环境部署
部署步骤
下载安装Tomcat入口类继承SpringBootServletInitializer重写configure方法配置pom.xmlIDEA生成war文件配置Tomcat运行项目
1.下载安装Tomcat
下载地址https://tomcat.apache.org/download-90.cgi
如下图所示 Windows下载64-bit Windows zip | Linux下载tar.gz
注意如果是Windows版下载的免安装版如果放到C盘的话注意给文件夹分配足够的权限不然启动之后访问页面显示400或者505类似的问题。
2.入口类继承SpringBootServletInitializer重写configure方法
如果要进行生产环境部署需要单独配置一下Spring Boot 的入口类需要继承SpringBootServletInitializer类重写configure方法因为默认情况外部Tomcat不能读取到Spring Boot 入口类的main方法启动程序加载使用需要继承代码如下
package com.hellospringboot.hellospringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/*** 启动类程序入口*/
SpringBootApplication
public class HelloSpringBootApplication extends SpringBootServletInitializer{/*** 重写configure方法加载启动类* param application* return*/Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(HelloSpringBootApplication.class);}/*** Spring Boot 默认main方法* param args*/public static void main(String[] args) {SpringApplication.run(HelloSpringBootApplication.class, args);}
}3.配置pom.xml
需要配置一下pom.xml排除一下内置tomcat的jar包防止打包之后与外面Tomcat jar 包冲突导致项目启动失败配置如下
!--排除内置tomcat jar包--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdscopeprovided/scope
/dependency
主要的代码是provided设置打包不会包含进去由其他设施提供。
4.IDEA生成war文件
步骤一修改生成jar为war格式
找到 jar 修改为 war 为什么需要修改jar包格式为war因为如果打包为jar包的时候不会包含JSP文件所以访问的时候回404而打包为war的时候回包含JSP文件所以需要把打包格式修改为war.
jar和war的区别
jarjava application archivejava应用程序库通常为开发引用的通用类warweb application archiveweb应用程序
所以从jar和war的区别来看网页程序打包成war格式也是很合适的。
如果需要修改生成文件的文件名称可以设置build下的finalName属性代码如下
buildfinalNamename/finalName
/build
步骤二使用IDEA生成war包
选择菜单栏Build Build Artifacts.. 点击Rebuild即可生成war包如图 生成完之后在项目的target目录下找到生成war文件如下图 5.配置Tomcat运行项目
步骤一把war文件复制到tomcat的webapps目录下
步骤二配置conf/server.xml
在Host标签内添加Context设置docBase属性填写war文件名称配置如下
Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue Context path docBasespringbootjsp debug0 privilegedtrue reloadabletrue /!--其他代码--
/Host
步骤三启动tomcat
运行bin/shutdown.bat文件启动tomcat
输入地址http://localhost:8080/cat 访问。
到此项目部署成功虽然本人部署到Windows服务器了Linux也是一样的步骤。
四、知识扩展Spring Boot 模板推荐
虽然上文我们详细介绍了JSP在Spring Boot 中使用但是Spring Boot官方并不推荐使用JSP原因见下文。
Spring Boot推荐模板引擎
ThymeleafFreemarkerMustacheGroovy Templates
如下图所示 Spring为什么不推荐使用JSP
Spring官方不推荐使用JSP的原因有这么几个
官方文档JSP没有Thymeleaf好Thymeleaf健康的开源项目几乎每个月都有更新而JSP已经好几年没有实质性的进展Thymeleaf有迅速响应的用户论坛。
更多详情点击查看https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf
总结按照官方的说法如果你有数百个JSP页面我们并不建议您应该立即抛弃它们重新使用Thymeleaf但是如果您开始开发一个新项目强烈鼓励您比较其他模板引擎和JSP以确认哪一个更适合您。
五、参考资料
开发Web应用之JSP篇http://tengj.top/2017/03/13/springboot5/
欢迎扫码加入圈子讨论交流