八、JSP(Java Server Pages)
八、JSP(Java Server Pages)
8.1、什么是jsp
Java Server Pages :Java服务器端页面,也和Servlet一样,用于动态Web技术
最大的特点:
-
写jsp就像写HTML
-
区别:
-
HTMl只能给用户提供静态v的数据
-
JSP页面可以嵌入Java代码,为用户提供动态v数据:
-
8.2、JSP原理
思路:JSP到底怎么样执行的
-
代码层面没有任何问题
-
服务器内部工作
tomcat中有一个Work目录
IDEA中使用Tomcat的会在IDEA的tomcat中产生一个work目录
发现页面转换成了Java程序
浏览器向服务器发出请求,不管访问什么资源,其实都是在访问Servlet!
JSP最终也会变成一个Java类
JSP本质上就是一个Servlet
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(HttpServletRequest request,HttpServletResponse response){
}
-
判断请求
-
内置一些对象
final javax.servlet.jsp.PageContext pageContext;//页面上下文 javax.servlet.http.HttpSession session = null;//session final javax.servlet.ServletContext application;//applicationContext final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this;//当前
-
输出页面前增加的代码
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();
-
以上这些对象我们可以在JSP页面中可以直接使用
8.3、jsp基本语法
任何语言都有自己的语法,Java中有,jsp也有,作为Java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可),Java语言都支持
JSP表达式
<%--JSP表达式作用:用来将程序的输出,输出到客户端--%>
<%= 变量或者表达式%>
<%= new java.util.Date()%>
JSP脚本片段
<%--JSP脚本片段--%>
<%
int sum=0;
for (int i = 0; i < 100; i++) {
sum+=i;
}
%>
JSP声明
<%!
static {
System.out.println("Loading Servlet");
}
public void lyh(){
System.out.println("进入了方法lyh");
}
%>
JSP声明:会被编译到JSP生成的Java的类中,其他的,就会被生成到_jspService方法中
在JSP,嵌入Java代码即可
<% %> 写Java代码的
<%= %> 在客户端输出一个Java的值
<%! %> 声明在_jspService之外
8.4、9大内置对象
-
PageContext 存东西
-
Request 存东西
-
Response
-
Session 存东西
-
Application 【ServletContext】 存东西
-
config 【SerlvetConfig】
-
out
-
page(基本不用)
-
exception
//保存的数据只在一个页面中生效
pageContext.setAttribute("name1","李永辉1");
//保存的数据只在一次请求中有效,请求转发会携带这个数据
request.setAttribute("name2","李永辉2");
//保存的数据只能再一次会话中有效,从打开浏览器到关闭浏览器
session.setAttribute("name3","李永辉3");
//保存的数据只在服务器中有效,从打开服务器到关闭服务器
application.setAttribute("name4","李永辉4");
8.5、JSP标签,JSTL标签,EL标签
<!-- jstl表达式的依赖-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- standard标签库-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
EL表达式:${ }
-
获取数据
-
执行运算
-
获取web开发的常用对象
JSP标签
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="李永辉"/>
<jsp:param name="age" value="22"/>
</jsp:forward>
JSTL表达式:
JSTL标签库的使用就是为了弥补HTML标签的不足,他自定义许多标签,可以供我们使用,标签的功能和Java代码吗一样
核心标签
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<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:out>
</c:if>
<c:out value="${isAdmin}"></c:out>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set var="score" value="80"/>
<c: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>
</body>
</html>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList<String> people = new ArrayList<>();
people.add(0,"张三");
people.add(1,"李四");
people.add(2,"李永辉");
people.add(3,"赵六");
people.add(4,"清瘦");
people.add(5,"天六月");
request.setAttribute("list",people);
%>
<%--
var:每一次遍历出来的变量
items:要遍历的对象
begin:哪里开始
end:到哪里
step:步长
--%>
<c:forEach var="people" items="${list}">
<c:out value="${people}"></c:out>
<br>
</c:forEach>
</body>
</html>
格式化标签
SQL标签
本文作者:菜鸡前来
本文链接:https://www.cnblogs.com/lyhidea/p/16950453.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步