- _nosay
JSP是什么?
2017-11-21 10:27:54
1.什么是JSP
JSP全名为Java Server Page是为了简化servlet的工作而出现的替代品.
在JSP中java代码与HTML共同存在,其中HTML代码用于展示静态的内容,java代码用来展示动态的内容.
2.为什么出现JSP技术
1997年Java Web中只有servlet,生成html技术也需要在servlet中完成,虽然servlet也可以完成所有的输出工作,但是使用过程比较麻烦,部署也比较复杂.为了克服这些缺点,1999年SUN公司推出JSP技术.该技术在生成HTML代码的时候相比servlet方便了许多.
3.对于servlet和JSP技术的理解
servlet:在java代码中嵌入html代码,更擅长编写java业务代码
JSP:在html中嵌入java代码,更擅长编写页面展示.
如果在Servlet中输入前端代码的话,如下
package net.zixue.jsp; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "HTMLServlet",urlPatterns = "/html") public class HTMLServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); writer.write("<!DOCTYPE html>"); writer.write("<html lang=\"en\">"); writer.write("<head>"); writer.write("<meta charset=\"UTF-8\">"); writer.write("<title>Title</title>"); writer.write("</head>"); writer.write("<body>"); writer.write("<h1>我是网站首页</h1>"); writer.write("</body>"); writer.write("</html>"); } }
也不是不能生成,但是太过麻烦,效率低下.如果简单的界面还好,稍微复杂的话就很难实现了.这时候jsp的效率就体现了出来.
JSP的运行原理
jsp在第一次被访问时会被Web容器翻译成servlet,即jsp本质上就是Servlet
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
被翻译后的servlet在Tomcat的work目录中可以找到,使用IDEA会单独为项目维护一个目录.
通过观察发现jsp会转化成java文件,并且间接的继承了HttpServlet,实现了其中的主要方法,init,service,destory,并且将html代码通过java方式输出给了浏览器
JSP脚本
1.<%JAVA代码%> 内部的java代码翻译到service方法的内部
2.<%=java变量或表达式%> 会被翻译成service方法内部out.print()
3.<%!java代码%> 会被翻译成servlet的成员内容,使用较少
JSP注释
1.Html注释:<!--注释内容-->
2.java注释: //单行注释/*多行注释*/
3.jsp注释: <%--注释内容--%>