JSP简单了解——基础语法、内置对象、各类标签、JavaBean
JSP
JSP:Java Server Pages:Java服务器端页面。和Serlvet一样,用于动态Web技术!
最大的特点:写JSP就像是再写HTML。
区别:
- HTML只给用户提供静态数据。
- JSP页面中可以嵌入Java代码,为用户提供动态数据;
JSP原理
浏览器现象服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转化成一个Java类,JSP本质上就是一个Servlet。
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
}
在Service方法中主要过程如下:
1.判断请求:
if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
final java.lang.String _jspx_method = request.getMethod();
if ("OPTIONS".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
return;
}
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
2.内置一些对象:
final javax.servlet.jsp.PageContext pageContext; //页面上下文
javax.servlet.http.HttpSession session = null; //session
final javax.servlet.ServletContext application; //applicationContext
final javax.servlet.ServletConfig config; //config
javax.servlet.jsp.JspWriter out = null; //out
final java.lang.Object page = this; //page:当前页
HttpServletRequest request //请求
HttpServletResponse response //响应
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
3.输出页面前:
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;
4.以上的这些对象,我们可以在JSP页面中直接使用!在JSP页面中,只要是Java代码就会原封不动的输出;而HTML代码则会转换称out,write()的形式输出。
jsp页面转换整体流程如下:

JSP基础语法
Java的所有语法都支持。
JSP表达式<%= %>:
<%-- JSP 表达式
作用将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
JSP脚本片段<% %>
<%-- 脚本片段 --%>
<%
int sum = 0;
for (int i = 1; i < 100; i++) {
sum+=i;
}
out.println("<h1>Sum+" + sum + "<h1>");
%>
JSP声明<%! %>
<%!
static {
System.out.println("Loading Servlet!");
}
%>
会被编译到JSP生成的Java类中!其它的被生成到_Service方法中!
JSP指令<%@ %>
- 1.<%@page %>
<%@page args....%>
- 2.<%@include %>
<%--@include 会将两个页面合二为一--%>
<%@include file="common/header.jsp"%>
<h1>网页主体</h1>
<%@include file="common/footer.jsp"%>
<hr>
<%-- jsp标签
jsp:include:拼接页面,本质还是三个
--%>
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="common/footer.jsp"/>
9大内置对象
- PageContext:存信息
- Request:存信息
- Session:存信息
- Application (ServletContext):存信息
<%--内置对象--%>
<%
pageContext.setAttribute("name1", "zzh1"); //保存的数据只在一个页面中有效
request.setAttribute("name2", "zzh2"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3", "zzh3"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4", "zzh4"); //保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<%
//从底层到高层(作用域)page-->request-->session-->application
//JVM 双亲委派机制在
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
%>
- Response; config (ServletConfig); out ; page; exception(用的不多)。
JSP标签、JSTL标签、EL表达式
1.EL表达式:${ }
- 获取数据
- 执行预算
- 获取Web开发的常用对象
2.JSP标签
<%jsp:include %>
<%jsp:forward page="">
<jsp:param name="" value=""/>
</jsp:forward>
3.JSTL标签:标签库的使用就是为了弥补HTML标签的不足;他自定义了许多标签,可以供我们使用,标签的功能和Java代码一样。
- 核心标签
需要先引入核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
然后即可利用以下标签进行相应的操作。

-
格式化标签
-
SQL标签
-
XML标签
JavaBean
实体类,具有特定的写法:
-
必须有一个无参构造
-
属性必须私有化
-
必须有对应的get/set方法
-
一般用来和数据库的字段映射:ORM:对象关系映射(表–>类;字段–>属性;行记录–>对象)
本文介绍了JSP的基础概念和工作原理,包括JSP的动态特性、九大内置对象及其用途,以及JSP表达式、脚本片段、声明、指令的使用。此外,还探讨了JSP标签、JSTL和EL表达式的应用,并详细阐述了JavaBean在Web开发中的角色,强调了其作为数据载体和ORM映射的重要性。

275

被折叠的 条评论
为什么被折叠?



