SpringBoot实践(四)使用jsp+外置tomcat部署访问

一:使用idea创建一个springboot项目过程就不再说了,注意创建的过程中要选择web组件。直接展示创建好的项目如下:

 二:在application-dev.yml 中添加如下属性:

server:
  port: 8005
  servlet:
    context-path: /test

然后写个controller类。

@RestController
public class IndexController {
   @GetMapping("hello")
    public String  test(){
       return "Hello!";
   }
}

请求测试一下:

 三:下面开始JSP访问的过程。因为SpringBoot默认是不支持JSP访问的,所以要想访问JSP手动添加一些依赖:

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency>

<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
	<!--<scope>provided</scope>-->
</dependency>

注意:<artifactId>tomcat-embed-jasper</artifactId>它的scope默认是provided,因为provided表明该包只在编译和测试的时候用,如果不去掉idea中访问jsp会报404。把它去掉,默认的scope就是compile了,这样最终就会被打包进jar或war中。

四:创建webapp/WEB-INF目录。idea自动生成的项目是没有这个目录的。在其下面再创建存放jsp的目录以及一个jsp.

五:在application.properties中配置资源访问路径:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.profiles.active=dev

六:请求处理controller


@Controller
public class ProductController {
       @Autowired
    private PurchaseService purchaseService=null;

       @GetMapping("/model")
    public ModelAndView index(){
           System.out.println("请求到达");
           return  new ModelAndView("index");
       }
    @GetMapping("/index")
    public String stringIndex(){
        System.out.println("请求到达");
        return  "index";
    }

}

测试结果:

原本怕直接添加资源会报404,在pom中添加了如下注释掉的内容,上面所写的结果把下面的内容注释掉仍然能正常访问,所以可以暂时不用添加。

      <build> 
      <resources>
			<!--<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/**</include>
				</includes>
				<filtering>false</filtering>
			</resource>-->
			<!--<resource>
				<directory>src/main/webapp/</directory>
				&lt;!&ndash;注意此次必须要放在此目录下才能被访问到 &ndash;&gt;
				<targetPath>META-INF/resources</targetPath>
			</resource>-->
		</resources>
	</build>

-------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------------

以上为在idea中启动访问jsp,使用的是内嵌的tomcat是没有问题的,但是实际生产中需要把项目部署到外部的tomcat,直接把上面的项目打包发布是不行的。现在我们考虑把项目打成war包部署到外部tomcat中。

一:设置项目打包类型为war。

在pom.xml中添加属性:

	<packaging>war</packaging>

二:注意使用外置的tomcat的话,在application-dev.yml中定义的如下属性将不再起作用,需要使用外部tomcat设置的端口和路径。

server:
  port: 8005
  servlet:
    context-path: /test

三:我window电脑新下载了apache-tomcat-9.0.30,下载来之后需要对conf/server.xml中的端口号进行设置。不然默认的端口很容易已经被占用了。主要设置更改下面两个端口:

更改这个端口是因为我本地去访问的时候出现了:关闭tomcat端口号占用的情况。

<Server port="8995" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

还有一个就是我们访问jsp用的端口号:我改成了:8999

 <Connector port="8999" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

四:设置访问路径,为了统一访问路径,我们上面设置了:  context-path: /test 路径,但是外置tomcat访问可以在pom中通过:

<finalName>mystore</finalName>

来设置。

五:上面设置完外部tomcat访问的端口号和路径设置完了。但是现在不能进行打包发布,因为在构建war文件以及外部部署的时候需要用到一个类: SpringBootServletInitializer  关于此类介绍可以参考文末链接。

我们平常的入口类需要继承它重写一个方法。

@SpringBootApplication
@MapperScan(basePackages = "com.mystore.mapper")
public class MystoreApplication extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(MystoreApplication.class);
	}

	public static void main(String[] args) {
		SpringApplication.run(MystoreApplication.class, args);
	}

}

六:好了,终于可以打包了。 最简单的一种就是:鼠标放到idea界面的最左下角,会弹出一个工具栏,找到 Maven Projects: 可以先运行clean,然后再运行package。

打成的war包会在项目的target目录下:

七:发布,访问。

 这一步不用多说了,直接copy打的war包放到tomcat的webapps下。然后到bin目录下 运行 startup.bat(window-系统)/startup.sh(linux-系统)。

因为外部部署访问,我们把端口和路径都改了,现在访问如下:

 

SpringServletContainerInitializer介绍

上传到GitHub参考

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姑苏冷

您的打赏是对原创文章最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值