JSP本质及语法

jsp引入

用户在访问服务器时,服务器的servlet小程序会通过response对象返回给用户相应的信息,如下中servlet

package com.controler;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //返回  响应类型
        response.setContentType("text/html;charset=utf-8");
        //返回  具体内容
        PrintWriter out = response.getWriter();
        out.write("<html>");
        out.write("<head>");
        out.write("</head>");
        out.write("<body>");
        out.write("welcome");
        out.write("</body>");
        out.write("</html>");
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

out.write就是服务器返回给用户的内容,网页代码会被浏览器解析

2,JSP本质就是servlet

1,当用户发起一个*.jsp的请求时,jspServlet(存在tomcat文件夹下web.xml)会得到请求 

2,jspServlet会根据访问的*.jsp文件如index.jsp生成一个index_jsp.java文件,随后此文件被JVM编译成class文件。

在tomcat下找到项目文件夹,然后一步步找会找到index_jsp.java文件,其中的代码会包含如下代码

      out.write("
");
      out.write("<!DOCTYPE html>
");
      out.write("<html>
");
      out.write("<head>
");
      out.write("<meta charset="ISO-8859-1">
");
      out.write("<title>Insert title here</title>
");
      out.write("</head>
");
      out.write("<body>
");
      out.write("<form action="login" method="post">
");
      out.write("<input type="text" name="empno"><br>
");
      out.write("<input type="submit" value="提交">
");
      out.write("</form>
");
      out.write("</body>
");
      out.write("</html>");    

会发现此代码正如上面servlet中的代码

3,运行的index_class文件正如一个servlet小程序,并将之发送个用户

也就是说整个jsp文件访问的过程就是jsp文件被jspServlet编译成一个servlet小程序,并将访问的相关内容发送给用户

3,JSP中的各种语法

1,jsp中的脚本语法(本质就是在HTML中写java代码)

1)注释

<!--HTML注释,此注释会在原码中显示 -->
<%--JSP注释,此注释的内容不会被jspServlet编译成servlet代码 --%>

2,脚本段

<%
//在脚本段中写的代码,会生成在_jspService方法中,也就是说写在此中的变量为局部变量
//注意,不能在脚本段中定义方法,因为java语法中 方法不能定义方法
int a = 10;
%>

3,JSP声明

<%!
//在jsp申明中,会生成在类体中,也就是说写在此中的变量为全局变量,同时也可以在此中定义方法
%>

4,JSP表达式

<%-- 本质就是将表达式和变量等输出在页面中 下例中a为变量,add()为方法--%>
<%=a %>
<%=add(11,22)%> 

2,JSP编译器指令

语法格式为<%@ 指令名称 %>

1,page指令

contentType属性,设置响应类型    <%@ page contentType="utf-8"%>

pageEncoding属性,设置响应字符集   <%@ page pageEncoding="true"%>

import属性,用于导包      <%@ page import="java.util.Date"%>

session属性,设置是否创建session对象   <%@ page session="true"%>

errorPage属性,当访问的页面出现错误是,会自动跳转到制定页面    <%@ page errorPage="error.jsp"%>

如在脚本段中写 int a = 5/0;  由于除数不能为零,那么在访问该页面内容时会自动跳转至error.jsp中

isELIgnored指令,设置是否会忽略EL表达式<%@ page isELIgnored="false"%>

2,include指令

file属性,<%@ include file="include.jsp" %> 相当于把include中的jsp文件复制到当前页面

注意:引入的include页面中的变量不要和此页面中的变量相同

3,taglib指令

3,动作语法

用于在jsp中消灭java代码

4,九大内置对象

4+2+3,4大作用域+2个输出+3个酱油

1,4大作用域

pageContext

request

session

application

原文地址:https://www.cnblogs.com/hunt1coder/p/11006219.html