JSP
JSP(Java Server Pages)动态网页技术标准。其根本是一个简化的Servlet设计。
JSP就是替代Servlet输出HTML的,在Servlet中也可以通过流的方式编写页面代码,但是这给程序人员带来了很多重复性工作而且将逻辑处理和页面输出写在了一起,这让程序不易读懂,所以出现了JSP。
JSP文件
JSP文件的本质是一个Java类,这个类也遵守Servlet的规范,可以说,JSP就是一个Servlet。
JSP文件对应的Java类由容器翻译生成,我们编写的JSP文件中的所有内容,都将被翻译到Java类中,_jspService方法中,并且放在"固定"代码(try)后。
我们写的JSP文件的代码和内容,无非是Java类的_jspService方法的方法体的一部分。
文件位置
当第一次访问jsp页面时,服务器会生成jsp页面对应的class文件。
eclipse:
D:\Program Files\apache-tomcat-8.5.53\work\Catalina\localhost\JavaEE02HelloServlet\org\apache\jsp
idea:(注意这是运行时文件)
C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_student_grade_system\work\Catalina\localhost\student_grade_system_war_exploded\org\apache\jsp
文件详情
打开index_jsp.java文档,不管自己是否写过代码,只要创建运行,就会有该文件生成。而且打开一定有代码。
final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html; charset=utf-8"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; 自己写的代码,以流的方式显示给用户。 catch(){ }finally{ }
JSP页面九大内置对象
内置对象本质依然是对象,只是不需要定义,也不需要创建,可以直接使用。而且名字是固定的,不能修改,可以直接调用其所有方法。
位置:在try前,先声明,在try开始赋初值,然后使用。
简要概述以下几个常用的:
1.request对象
request该对象代表了客户端的请求消息,主要用于接收通过HTTP协议传送到服务器的数据。(包括头消息,系统消息,请求方式以及请求参数等)。request对象的作用域为一次请求。
2.response对象
response代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
3.session对象
session对象是由服务器自动创建的与用户请求相关的对象。服务器为每一个用户都生成一个session对象,用于保护该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为"Key/value"。session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。销毁可以通过session().invalidate();实现、
4.application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
案例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% int a = 99; %>
<%=a+1 %>
</body>
</html>
结果
100
JSP页面注释
不管任何编辑器,养成良好的编写注释习惯,总是好的,有利于自己梳理思路,以及后期的修改、方便其他人的阅读。
JSP注释: <%-- 注释内容–%>
- 这是jsp 自己的注释,一般建议使用这种,用隐藏注释标记的字符会在JSP编译时被忽略掉。
脚本注释:java注释
<%
// java 代码;(仅注释单行)
%>
或者
<%
/* java 代码 (多行注释)*/
%>
JSP与Servlet的区别
前面我们也说了,JSP在运行时也会被编译生成class文件,且本质就是一个类,那么通过上面的了解和认识JSP和Servlet到底有什么区别?
- JSP侧重于视图(显示数据);而Servlet主要用于控制逻辑。
- JSP由HTML代码和JSP标签构成,可以方便地编写动态网页;Servlet完全是Java程序代码构成,擅长于流程控制。
- JSP有9个内置对象,这为页面中获取数据以及页面之间传递数据提供了方便
注意在JSP页面也可以编写Java代码,只要写在<% %>中即可。