jsp
1、什么是jsp
Java Servlet Pages:java服务器端页面,和Servlet一样,用于动态Web技术。
最大的特点:
写jsp就好像在写HTML
区别:
HTML只给用户提供静态的数据
JSP中可以嵌入java代码,给用户提供了动态的数据
2、JSP原理
思路:jsp到底是怎么执行的
浏览器向服务器发送请求,不管访问什么资源,都是在访问Servlet
jsp最终也会被转化为java类
JSP本质上就是一个Servlet
//初始化
public void _jspInit(){
}
//销毁
public void _jspDestory(){
}
//JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response)
1、判断一些请求
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;//响应
在jsp页面中:
只要是java代码就会被原封不动的输出:
如果是HTML代码,会被转换为这样的格式输出到前端
out.print("<html>\r\n");
3、JSP的基础语法
任何语言都有自己的语法,java中有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可)。java的所有语法都支持。
<%--jsp表达式
作用:用来将程序输出到客户端
<%= 变量或者表达式%>
--%>
<%= new java.util.Date()%>
jsp的脚本片段
<%--jsp脚本片段--%>
<%
int sum = 0;
for(int i = 1;i<=100;i++){
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
jsp还可以这样玩
<%
int x =10;
out.println(x);
%>
<p>这是一个jsp文档</p>
<%
int y = 20;
out.println(y);
%>
<hr>
<%--在代码中嵌入HTML元素--%>
<%
for(int i = 0;i<5;i++){
%>
<h1>Hello Word <%=i%></h1>
<%
}
%>
jsp声明
<%!
static{
System.out.println("loading Servlet");
}
private int golbaLVar = 0;
public void kaung(){
System.out.println("进入了方法kuang");
}
%>
jsp声明:会被编译到jso生成的java类中。其他的会被生成到_jspService方法中
在jsp中嵌入java代码即可
<%%>
<%=%>
<%!%>
<%--注释--%>
jsp的注释不会在客户端显示,html就会
4、jsp指令
<%@page args....%>
<%@include file =""%>
<%--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/header.jsp"/>
5、九大内置对象
PageContext 存东西
Request 存东西
Response
Session 存东西
Application【ServletContext】 存东西
config
out
page,不用了解
exception
pageContext.setAttribute("name1","pj1");//保存的数据只在一个页面中有效
request.setAttribute("name2","pj2");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","pj3");//保存的数据只在一次会话中有效,打开浏览器到关闭浏览器
application.setAttribute("name4","pj4");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
request:客户端向服务器发送请求,产生的数据用户看完就没用了。必如:新闻
session:客户端向服务器发送请求,产生的数据用户用完一会还有用。必如:购物车
application:客户端向服务器发送数据,产生的数据一个用户用完其他的用户还能再用。比如:聊天数据
6、JSP标签、JSTL标签、EL表达式
EL表达式:获取数据、执行运算、获取web开发的常用对象。
JSP标签
<jsp:forward page="/pagetag2.jsp">
<jsp:param name="name" vlaue="pangjie"></jsp:param>
<jsp:param name="age" value="22"></jsp:param>
</jsp:forward>
<%--取出--%>
姓名:<%=request.getParameter("name")%>
年龄:<%=request.getParameter("age")%>
JSTL表达式
JSTL标签库就是为了弥补HTML标签的不足;他自定义许多标签,可以供我们使用,标签的功能和Java代码一样。
格式化标签
SQL标签
XML标签
核心标签(部分掌握)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ob4igPmf-1608036742337)(C:\Users\dell\Desktop\捕获.PNG)]
测试代码
<%--
跳转到coreif.isp页面参数为:username=param.username
完整路径为http://localhost:8080/jsp/coreif.jsp?username=admin
--%>
<form action="coreif.jsp" method="get">
<%--
EL表达式获取表单中的数据
${param.参数名}
--%>
<input type="text" name="username" value="${param.username}">
<input type="submit" value="登录">
</form>
<%--判断如果提交的用户名是管理员,则登录成功--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理员欢迎您!"/>
</c:if>
<%--自闭合标签--%>
<c:out value="${isAdmin}"/>