jsp day1
1.jsp是什么
jsp全称Java Server Pages,是一种动态网页开发技术。
jsp servlet php asp等属于动态网页技术
jsp页面是以.jsp结尾的文件
.html文件是静态页面
.jsp 文件是动态页面
jsp页面允许我们在html代码中嵌入java代码,这样我们就可以在html中使用java代码来完成的功能了
简单的理解,jsp就是html页面+java代码
但是jsp中能写的内容还不止这些,可以包含如下内容:
- html标签
- css
- javascript
- java代码
- EL表达式
- 引入并使用其他标签库,例如jstl标签库、struts2标签库、spring框架标签库等
所以jsp页面里面除了能写之前在html里面写东西之外,还可以写很多和java相关的对象,java代码、el表达式、动态标签库等(这些对象的本质都是执行java代码)
注意:jsp页面中可以只有java代码,也可以一句java代码也没有
使用jsp页面完成一个HelloWorld程序
2.jsp的运行
浏览器可以直接运行html页面,但是不能直接运行jsp页面,jsp是需要在web容器中运行(拥有jsp引擎,jasper.jar),例如tomcat服务器
所以jsp是运行在服务器端的,运行完之后,把动态生成的html页面再使用io流写回给浏览器,浏览器接收并且解析后再呈现出来效果。
3.jsp和servlet的关系
简单的讲,一个jsp页面就是一个servlet
jsp页面第一次被访问的时候,会被tomcat服务器编译成一个java类,这个java默认继承HttpJspBase类,而HttpJspBase类是HttpServlet的子类。
我们编写的jsp页面最终就被tomcat服务器编译成了一个HttpServlet的子类,所以说jsp本身就是一个servlet,那么jsp为什么是需要运行在tomcat服务器中原因也就很好理解了。
jsp页面被tomcat服务器编译成的java文件及其class文件保存在tomcat服务器里面的work目录中,在这里的代码中,我们还可以看见它是如何使用io流把生成的html页面代码一行一行写回给浏览器的。
tomcat中lib目录中的jasper.jar相关api里面封装了一些操作,可以把jsp页面编译为java文件以及class文件
例如
- 桌面上手动有一个web项目:web_test
- 项目中有一个jsp页面:test.jsp
- 运行下面java代码把web项目中的jsp页面编译成java文件和class文件
注意
web项目的基本结构
运行环境
-
如果是在web项目运行下面代码,需要额外加入俩个jar包:(web项目中已经有了tomcat中lib里面的jar了)
ant-1.10.6.jar
tomcat-juli-8.5.38.jar -
如果是在java项目中运行下面代码,至少需要加入以下jar包:
tomcat-juli-8.5.38.jar
ant-1.10.6.jar
jasper.jar
servlet-api.jar
tomcat-api.jar
tomcat-util.jar
jsp-api.jar
el-api.jar
ecj-4.6.3.jar示例
public class TestCompiler {
public void jspcTest(){
try {
JspC jspc = new JspC();
//web应用的root目录
jspc.setUriroot("C:/Users/thinkpad/Desktop/web_test");
//.java文件和.class文件的输出目录
jspc.setOutputDir("C:/Users/thinkpad/Desktop/web_test");
//要编译的jsp
jspc.setJspFiles("test.jsp");
//false或不指定的话只生成.java文件
jspc.setCompile(true);
jspc.execute();
}catch(Exception e){
e.printStackTrace();
}