JSP本质及语法 jsp引入 2,JSP本质就是servlet 3,JSP中的各种语法 4,九大内置对象
用户在访问服务器时,服务器的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