接手一个老项目,目录里躺着一堆 jsp文件,双击用浏览器打开是一片源码,编辑器里又是满屏百分号和尖括号。它不是拿来直接看的,得跑在容器里才现出真身。
jsp 到底是什么
jsp 全称 Java Server Pages,本质是带 Java 代码片段的网页模板。浏览器请求一个 jsp,服务器上的容器比如 Tomcat 先把它翻译成 Servlet,编译成 class 文件,再由 JVM 执行,再把生成的 HTML 发回浏览器。第一次访问慢,时间基本花在翻译和编译上。
为什么双击打不开
- 没有容器:直接打开只是看文本,里面的 Java 片段不会执行,页面自然不对。
- 依赖项目结构:它要靠 WEB-INF 下的配置、类库和 web.xml 才能跑,单个文件挪出去就废了。
- 资源路径:引用的 css、js、图片多是相对项目根的路径,位置一变全变 404。
正确的运行方式
把项目放进 Tomcat 的 webapps 目录,运行 bin 下的 startup,再访问 localhost:8080 加项目名加页面名用 IDEA 或 Eclipse 更省事,配好 Tomcat 直接启动,改完 jsp 保存刷新就能看到效果。注意别用 file 协议打开,那种地址根本没经过服务器,动态部分永远不会执行。
改它之前要确认的事
jsp 里可以写脚本片段、表达式、声明,也能用 EL 和 JSTL 取值。现在新项目多用前后端分离,jsp 逐步被模板引擎和接口替代,但老系统里存量很大。动手前先确认容器的版本和 JDK 版本,这两处不匹配,编译阶段就会报错。
别用改扩展名的办法
有人图省事把 jsp 改成 html,浏览器确实能打开,但里面的 Java 逻辑全成了纯文本,取不到任何数据。反过来把 html 改成 jsp 也不会自动变成动态页,容器只会原样输出。扩展名只是容器识别的依据,逻辑得真写在文件里才算。
- 判断提醒:只想看效果,找运维要访问地址,别在本地双击;要改代码,先在测试环境跑通再动生产,老项目往往牵一发动全身。