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注释: <%--注释内容--%>