JSP
1、什么是JSP
Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术
最大的特点:
- 写JSP就像在写HTML
- 区别:HTML只给用户提供静态的数据、jsp页面可以嵌入JAVA代码,为用户提供动态数据
2、JSP原理
思路:JSP到底怎么执行的
- 代码层面没有任何问题
- 服务器内部工作
tomcat中有一个work目录;
IDEA使用Tomcat的会在IDEA的Tomcat中产生一个work目录
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会被转换成为一个Java类!
JSP本质上就是一个Servlet
//初始化
public void_jspInit(){}
//销毁
public void_jspDestory(){}
//JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response){}
- 判断请求
- 内置一些对象
- 以上这些都可以在jsp中使用!
在JSP页面中:
只要是JAVA代码就会原封不动的输出;
如果是HTML代码,就会被转换为:<out.write("<html>\r\n")>
这样的格式输出到前端!
3、JSP基础语法
任何语言都有自己的语法,JAVA中有,。
JSP表达式
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
JSP脚本
<%
int sum = 0;
for(int i = 1;i<=100;i++){
sum+=i;
}
System.out.println("<h1>Sum="+sum+"</h1>");
%>
JSP声明
<%!
static{
System.out.println("声明");
}
private int globalVar = 0;
%>
JSP声明:会被编译到JSP生成Java二点类中!其他的,就会被生成到_jspService方法中!
<%@ page import="java.util.*"%>
<%@ page isErrorPage="true" %> //这是一个错误页面
<%@ page errorPage="error.jsp" %> //如果是错误页面去error.jsp
web.xml增加配置错误页面也可
4、9大内置对象
- PageContext 存东西
- Request 存东西
- Response
- Session 存东西
- Application【ServletContext】 存东西
- config【ServletConfig】
- out
- page
- exception
JSP页面代码
<%
pageContext.setAttribute("name","jjj");//保存的数据只在一个页面中有效
request.setAttribute("name2","jjj2");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name1","jjj1");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name3","jjj3");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<% pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE);%>//等同于
<%--<% session.setAttribute("hello1","hello1");%>--%>
request:客户端向服务器发送请求,产生的数据,与用户看完就没有用了,比如:新闻,用户看完没有用的!
session:客户端向服务器发送请求,产生的数据,用户用完一会还有,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还有可能使用,比如聊天数据
5、JSP标签、JSTL标签、EL表达式
EL表达式:(${ })
- 获取数据
- 执行运算
- 获取web开发的常用对象
<jsp:forward page=" index.jsp">
<jsp:param name="value1" value="value1"></jsp:param>
<jsp:param name="value2" value="value2"></jsp:param>
</jsp:forward>`//跳转到某个页面
//取出参数
<%= request.getParam("value1")%>
<%= request.getParam("value2")%>
JSTL标签
菜鸟教程学习
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL标签库是为了弥补HTML标签的不足;它自定义许多标签。
核心标签(掌握部分):
格式化标签:
xml标签
使用步骤:
- 引入对应的taglib
- 使用其中的方法
- 在Tomcat中也需要引入jstl包,否则会报错:JSTL解析错误(Tomcat的lib中)
<form action="coreif.jsp" method="get">
<input type="text" name="value1" value="${param.value1}">
//判断如果提交的用户是管理员,则登录成功
<c:if test="${param.value1=='value1'}" var="isAdmin">
<c:out value="管理员欢迎您!">
</c:if>
//自闭合标签
<c:out value="$(idAdmin)"/>
<c:set var="score" value="85"/>
<:choose>
<c:when test="${score>90}">
你得成绩优秀
</c:when>
<c:when test="${score>=80}">
你得成绩良好
</c:when>
<c:when test="${score>=70}">
你的成绩一般
</c:when>
<c:when test="${score<=60}">
你得成绩不及格
</c:when>
</c:choose>
//var 每一次遍历出来的变量
//items 要遍历的对象
//begin 哪里开始
//end 哪里结束
//step 步长
<c:forEach var="***" items = ${list}>
<c:out value="${people}"/><br>
</c:foreach>
<c:forEach var="" items="" begin="" end="" step=""></forEach>