记 从零搭建一个spring boot 多模块(models) 打包 含多个web工程打包细节与问题记录(二)jsp细节

项目基础结构(项目地址 : 项目地址:https://github.com/luocaca/models.git

--

现在我们讲一讲 jsp 引入过程中404搞得你措手不及

本次排查解决的几个问题:

1. 引入jsp出现404 去源码中排查

2. thymeleaf 与 jsp 共存问题


--前排申明-- (不然怕你们项目跑起来不会登陆)

username:root

password:root 



一.(jsp引入前准备)

        web项目引入,本文以 model-web  模块进行展开


- 新建一个model-web ,这个就不说了,右键models,命名 model-web,本model就是这么来的 ,O(∩_∩)O哈哈~


- 手动建一个 webapp.WEB-INF.jsp.index.jsp 文件


- 配置model的 project Structure (译文:项目结构)

-或者

-

- 配置完webapp 目录与 web.xml 就能够让项目顺利找到 webapp 下边的文件了


二 (jsp 引入相关包 maven 包)

 

--

-- jsp 配置文件,设置前缀,后缀,源目录在webapp ,刚刚已经设置过一次了


三(配置完毕,开跑.... run 起来 8082端口 )


接下来 open in brower 

访问 toIndexJsp


进入断点,继续跑一下


搜嘎,咋回事,404白板,看看文件目录,



/WEB-INF/jsp/index.jsp

没毛病啊,对应的位置也是有的啊。什么鬼,没辙,找原因呗。

咋办,想不出哪里有问题 ,问问度娘吧。


看了几篇,大概可以定位到问题所在,

1.修改一下运行配置


新增一个配置 ,这个是我的 项目位置,你们要改成你们项目所在位置(D:\android_luocaca\idea_workpase\models\model-web)model的绝对路径



- re

- re run 重新跑一个   


ok 跑起来了,大吉大利,百度老铁,一个字,稳妥。,,,哈哈哈

四 (为啥配置了个路径就没事了,刚才还有问题的。想想,还是想不通,估计是绝对路径跟相对路径的问题吧)

但是我还想找找具体原因 404 哪里产生的?

   - 404 产生的原因 

(*^▽^*),我问问百度,


好多啊,一两天看不完,

-- 我们知道spring boot  嵌入内置的tomcat 然后通过tomcat 的初始化,将jsp 放到tomcat 容器里面,最后通过spring boot 动态代理去 根据 

前缀 


后缀

再插入中间 index  组合成  /WEB-INF/JSP/index.jsp

然后通过这个路径去找到  这个图中的位置

项目路径

本应该没问题的,但是就是404 白板了,擦 ,咋们现在去tomcat 里面看看到底为什么 找不到了,,,,

五 (找到启动类,断点打一个,咋们看看)

org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory

TomcatServletWebServerFactory

tomcat 创建类 ,一个生产者, 提供


tomcat的初始化

看到一个prepareContext(tomcat.getHost(), initializers);

  准备上下文,打个断点,咋们跟踪一下,里面代码到底怎么写的。嘿嘿。有点多。看得很懵逼。。。。。


debug 运行一下

.耐

.心

.等

.待

runing ....


抓到你了。汤姆猫

看到没。汤姆猫 内置spring以后,没处安放,只能偷偷在c盘user下边偷偷建一个临时路径,在里面偷偷跑起来,...嘿嘿嘿

继续走起。


prepareContext

找到了prepareContext 看看上下文环境都做了些什么


验证文档路径

f7  继续跟进去看看




就是这里了,在第三行


这是一个数组
循环查找这个数组,验证是否是有效文件夹



第一个就是我们配置的 src\main\webapp


看看看,进来了,

说明当前路径有效,也就是我们刚才设置了


刚才设置了working dir

现在能够找到路径位置

现在让我们看看 root 的绝对位置是什么

alt + F8 


没毛病

没毛病,跟我们working dir 设置的位置一样,搜嘎,百度给的答案真的挺准

继续走起,走完断点,后边没什么可看的了,

跑一个 


root root 登录一下



完美


- 回头想想,那刚才怎么不行,那我把working dir 清掉,再看一看这个方法,

      来来来,让我们重蹈覆辙





清空配置路径


stop


重debug  run 

嘿嘿嘿,猫哥。我又来抓你了


活捉一只汤姆猫



再次找到准备上下文



还是那个熟悉的代码

正常情况下,应该跟刚才一样 走 root.exists() 就是文件存在



什么鬼,走到public了

文件不存在啊,咋们看看root 是 哪来的妖怪,

Alt + F8    root 参数  

root.getAbsolutePath()

D:\android_luocaca\idea_workpase\models\public


我的天,我是model-web模块,你咋去models里面找了捏,

我的天,我是model-web模块,你咋去models里面找了捏


最终返回null,找不到指定文件路径

继续走完断点

白板,确实是这个问题


我在想一想,你是不是傻,难道要我把 src/webapp/WEB-INF/jsp/index.jsp

拷到models 下边嘛。你当我傻嘛 。我能那样干嘛。


诶。这想法好。我试试看。把 src/webapp/WEB-INF/jsp/index.jsp 复制到 models 对应的路径下。在试试。


看看整体结构

现在我要把  src.main.webapp.web-inf.jsp.index.jsp

复制到models 的目录底下。


这样 貌似D:\android_luocaca\idea_workpase\models\  src\webapp.....

应该就有  需要的文件了。

咋们重新跑一个。

 抓到汤姆猫以后

直接走到这里

到这里


看看看,居然有文件了。有一个index.jsp文件

那我怎么知道是 model-web还是models 父类的。

哈哈。还是看看绝对路径把。


确实是在 models下边

用文件打开看看


好像没毛病,是我复制出来的那个src文件夹


过了断点,看看


吼吼吼。真的可以

我居然听了tomcat 的鬼话。把model-web的文件复制到models下边去,被别人看到。一定会笑话我的。

现在我把working dir 改回原来项目路径

D:\android_luocaca\idea_workpase\models\model-web


apply一下。然后重新运行,


rerun ing 

.稍

.等

.一

.下


ok 切回当前model-web下面的文件了

.没毛病,现在可以愉快的玩耍jsp了





分割线


后面还有一点 thymeleaf 和jsp 要公用的

,下次补充了。已经写在demo里面,,也可以自己去看。


项目地址:https://github.com/luocaca/models.git

加一个配置文件就好

就能共存了

happy。



参考网站:www.baidu.com

参考文章:https://www.iflym.com/index.php/java-programe/201706060001.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342