JSP详解
JSP本质就是一个Servlet,JSP主要负责与用户进行交互,将最终的界面呈现给用户,可以说JSP是HTML+CSS+JS+JAVA的混合文件,我们可以看出JSP主要是将最终的界面呈现给用户,但又说
本质上就是Servlet那么我们为什么不直接使用Servlet呢?
接下来我们就来看看如果没有JSP我们只是用Servlet给用户返回界面是怎么进行返回的
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("");
resp.getWriter().write("");
resp.getWriter().write("");
resp.getWriter().write("\tTest ");
resp.getWriter().write("");
resp.getWriter().write("");
resp.getWriter().write("\t< h1>Hello</ h1>");
resp.getWriter().write("\t< h2>World</ h2>");
resp.getWriter().write("");
resp.getWriter().write("");
}
我们通过上述代码可以发现就只是一个带有两个标题的页面,就需要使用这么多语句来实现。这还只是纯html代码,如果还有css,js,ajax 那就太多太多了,因此使用纯Servlet来将页面返回给用户是不可行的,并且后期维护也不好维护
所以我们此时需要一个东西,既可以接收数据也可以编写页面,接收数据使用Java来实现,而编写页面就使用html,css,js来编写,此时JSP就出来,它是html+css+js+java的结合体
因为只有Servlet可以给客户端作出响应,因此我们的JSP最终还是要转换为Serlvet
为什么说JSP就是Servlet呢?
当服务器接收到一个后缀是jsp的请求的时候,会将该请求提交给JSP引擎处理,每一个JSP页面第一次被访问的时候,JSP引擎会先将其转为为Servlet文件,再由Web容器调用Servlet完成响应。
服务器接收到jsp请求后,会先将其解析成java程序,然后再把这个java程序编译成字节码文件,最终去运行这个字节码文件,jsp最终会转换为Servlet代码,当我们访问Servlet的时候肯定会调用service方法,tomcat会默默的把我们的jsp代码,使用write一句一句的写出来,最后将一个完整的页面响应给用户,该操作是tomcat默默帮我们完成的。
单纯从开发角度看,JSP就是在HTML中嵌入JAVA程序
具体的嵌入有三种方式
1.JSP脚本,用于JAVA逻辑代码的编写
<% java逻辑代码 %>
2 JSP声明,用于JAVA方法的编写(注:方法只能用JSP声明来完成)
<%! 声明java方法 %>
3 JSP表达式:把JAVA对象直接输出在HTML页面中
<%= java对象 %>