JSP
什么是JSP
Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术!
最大的特点:写JSP就像在写HTML
区别:
HTML只给用户提供静态的数据
JSP页面中可以嵌入JAVA代码,为用户提供动态数据;
JSP原理
在写好一个jsp运行之后,在idea中使用Tomcat会在idea的tomcat中生产一个work目录
里面的jsp文件全部被转换成了java文件
这里我们可以看到他通过java语言来输出我们所写的html语句
jsp的本质就是一个servlet
在jsp中内置了这些对象
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 //响应
比如,在之前我们在servlet中写session需要先获取session
但是如果在jsp中写session可以直接写要使用的方法
我们在访问一个jsp时,jsp页面会在服务器中转化为java文件,生成一个xx_jsp.java文件,然后编译成一个xx_jsp.class文件,再返回到服务器,我们得到的就是服务器处理完成的class对象
JSP的基础语法
任何语言都有自己的语法,JAVA中有 ,JSP 作为java技术的一种应用,它拥有一些自己扩充的语法,Java所有语法都支持!
JSP表达式
用来将程序的输出,输出到客户端
<%=new java.util.Date()%>
输出结果
JSP脚本片段
<%int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
输出结果
脚本片段再实现
小脚本之间可以隔着html代码因为编译之后html语句也是用java代码打印出来的
<%
int x = 10;
%>
<p>这是一个JSP文档</p>
<%
out.println(x);
%>
输出结果
在代码中嵌入html代码
<%
for (int i = 0; i < 5; i++) {
%>
<h1>Hello,World <%=i%> </h1>
<%
}
%>
JSP声明
<%!
public void wx(){
System.out.println("wx");
}
%>
JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到_jspService方法中!
JSP指令
<%@ page ....%>// 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
例如当页面发生500错误跳转到错误页面
我们也可以在web.xml中定义错误跳转页面
<%@include%>// 包含其他文件
包含页面,会将两个页面合二为一
在header.jsp写了我是头部
<jsp:include page="/common/header.jsp"></jsp:include>
看起来一样,但实际上使用这个是页面拼接,而上面那个是包含,合二为一
9大内置对象及作用域
PageContext 存东西
Request 存东西
Response
Session 存东西
Application 【SerlvetContext】 存东西
config 【SerlvetConfig】
out
page ,不用了解
exception
pageContext.setAttribute("name1","wx1"); //保存的数据只在一个页面中有效
request.setAttribute("name2","wx2"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","wx3"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","wx4"); //保存的数据只在服务器中有效,从打开服务器到关闭服务器