1.JSP是什么,其作用是什么?
jsp的全称是java server pages。java的服务器页面。
jsp的主要作用是代替Servlet程序回传html页面的数据
2.为什么要使用JSP代替Servlet程序回传html的数据
因为Servlet程序回传html数据非常的繁琐。开发成本和维护的成本的都极高。
下面我们来看一个例子:
package com.fufu.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class aaa extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//获取响应的流回传html页面数据
PrintWriter printWriter = resp.getWriter();
printWriter.write(" <!DOCTYPE html>");
printWriter.write(" <html lang=\"en\">");
printWriter.write(" <head>");
printWriter.write(" <meta charset=\"UTF-8\">");
printWriter.write(" <title>Title</title>");
printWriter.write(" </head>");
printWriter.write(" <body>");
printWriter.write(" <h1>这是一个html的页面<h1/>");
printWriter.write("</body>");
printWriter.write("\n" +
"</html>");
}
}
以上是一个Servlet类,通过响应流将数据回传到html页面,配置好xml文件,启动tomcat服务器,得到的页面如下:
到这,相信你应该知道为什么Servlet回传html网页非常繁琐了。
3.JSP的本质
3.1简介
当一道工序变得特别麻烦的时候,我们万能的程序员总会想出其他的解决方法,JSP为了代替Servlet回传html而诞生。
3.2在IDEA中如何创建一个JSP文件
【这里主要针对第一次用IDEA的码友,觉得啰嗦可以直接看后面】
在你工程的web项目下右键,新建一个JSP
3.3在项目部署中JSP页面如何访问
JSP和HTML一样,都是通过【ip+prot+工程名+你的.JSP/HTML】来进行访问的,比如,在我的web项目下有一个aa.jsp和一个bb.html,他们的访问方式分别是
********************localhost:8080/工程名/aa.jps
*******************localhost:8080/工程名/bb.html
JSP的本质
jsp的本质是一个Servlet的程序,为什么这么说呢?我们来进行分析
我们创建一个web工程,新建一个jsp页面,(记得删掉index.jsp默认页面)
在启动tomcat的时候,会显示一些配置的资源路径,如下
还记得【卡特琳娜】吧,不知道的码友可以先去看看我之前的一篇介绍tomcat的帖子,里面有有介绍catelina目录的作用,我们直接复制这个路径打开,显示如下页面
这里的conf是配置文件,他里面有一个catelina文件夹,里面有一个你的工程的xml配置文件,主要是一个映射对应工程的作用,简单的带大家看一下吧,
点击conf进入,可以看到一个katelina的文件夹,
然后一直点,最后你会看到一个xml的配置文件,我们打开配置文件进行查看
可以看到,它这里是用一个path虚拟路径去映射了你的工程路径,也就是当我们启动tomcat服务器后可以通过path里的虚拟路径直接访问工程项目。
好,简单的介绍了之后,我们重新回到前面,【怕大家忘记,翻到前面有麻烦,这里我再把图放上来】
当我们启动tomcat服务器,因为index.jsp被删除了,我们知道,index.sp是tomcat默认访问的程序,所以先显示找不到页面,如下
tomcat启动之后,我们再来看上面的文件夹,你会发现它多了一个work文件夹
点进去,它同样是一个卡特琳娜文件夹,然后是你的本地文件,一直点到最后,你会看的你的工程目录,因为我们这时候还没有访问一个页面,所以里面是空的,
现在我们来访问aa.jsp页面
然后我们再来看你的工程目录,你会发现你的工程目录下有其他的东西,一直点到最里面,我们看到了我们想要的东西
我们打开java的源文件进行查看
可以看到,这个类继承了HttpJspBase,我们知道,要想实现一个Servlet程序我们有两种方法(我这里只说两种常用的),要么继承HttpServlet类,要么实现Servlet接口,那么,我这里的aa_jsp类以上两种都没没有实现,它为什么是一个Servlet类呢,其实,HttpJspBase类实际上是间接的继承了HttpServlet类,具体的继承关系就不带大家一一看了。
除了该方法的继承,我们最关心的应该是它是怎么回传html数据的,我们继续看该类的方法体
到了这里,相信你对jsp应该有了一个大致的了解了,接下来我们就进行总结吧!
总结
- JSP是java的服务器页面
- 它是为了提高Servlet回传html网页数据的效率被创造的
- JSP实质上就是一个Servlet程序
- 当我们启动tomcat程序时,tomcat服务器会自动帮我们把JSP页面翻译成一个Java的元源文件,并对它进行编译