Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术!

最大的特点:

  • 写JSP就像在写HTML
  • 区别:
    • HTML只给用户提供静态的数据
    • JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

一、JSP原理

思路:JSP到底怎么执行的!

  • 代码层面没有任何问题
  • 服务器内部工作
    IDEA中使用Tomcat的会在IDEA的tomcat中生成一个work目录

如果你的C:\administrator\王帅.IntelliJIdea没有该文件夹,

需要看以下链接进行配置 :https://blog.csdn.net/s464754435/article/details/116241051

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP最终也会被转换成为一个Java类

JSP本质上也是一个Sevlet

  1. // 初始化
  2. public void _jspInit() {
  3. }
  4. // 销毁
  5. public void _jspDestroy() {
  6. }
  7. // JSPService
  8. public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)

1.判断请求

2.内置一些对象

  1. final javax.servlet.jsp.PageContext pageContext; // 页面上下文
  2. javax.servlet.http.HttpSession session = null; // Session
  3. final javax.servlet.ServletContext application; // application
  4. final javax.servlet.ServletConfig config; // config
  5. javax.servlet.jsp.JspWriter out = null; // out
  6. final java.lang.Object page = this; // page:当前
  7. HttpServletRequest request // 请求
  8. HttpServletResponse response // 响应

在JSP页面中;

只要是JAVA代码就会原封不动的输出;

如果是HTML代码,则会被转换为:

  1. out.write("</html>\n");

二、JSP基本语法

JSP表达式

  1. <%--JSP表达式
  2. 作用:用来将程序的输出,输出到客户端
  3. <%= 变量或者表达式%>
  4. --%>
  5. <%= new java.util.Date()%>

jsp脚本片段

  1. <%
  2. int sum = 0;
  3. for (int i = 1; i <=100 ; i++) {
  4. sum+=i;
  5. }
  6. out.println("<h1>Sum="+sum+"</h1>");
  7. %>

脚本片段再实现

  1. <%
  2. for (int i = 0; i <5 ; i++) {
  3. %>
  4. <h1>hello World <%=i%></h1>
  5. <%
  6. }
  7. %>

JSP声明

  1. <%!
  2. static {
  3. System.out.println("Loading servlet!");
  4. }
  5. private final int globalVar = 0;
  6. public void shuai(){
  7. System.out.println("进入帅页面!");
  8. }
  9. %>

JSP声明:会被编译到JSP生成的JAVA的类中!其他的,就会被生成到_jspService方法中!

在JSP,嵌入java代码即可

  1. <%%>
  2. <%=%>
  3. <%!%>
  4. <%--注释--%>

JSP的注释,不会在客户端显示,HTML就会

配置错误页面

  1. xxx.jsp文件中配置
  2. <%--定制错误页面--%>
  3. <%@ page errorPage="error/500.jsp" %>
  4. web.xml文件中配置
  5. <error-page>
  6. <error-code>404</error-code>
  7. <location>/error/404.jsp</location>
  8. </error-page>
  9. <error-page>
  10. <error-code>500</error-code>
  11. <location>/error/500.jsp</location>
  12. </error-page>

三、JSP指令

  1. <%--@include会将两个页面合二为一--%>
  2. <%@include file="common/header.jsp"%>
  3. <h1>网页主体</h1>
  4. <%@include file="common/header.jsp"%>
  5. <hr>
  6. <%--JSP标签
  7. jsp:include:拼接页面:本质还是三个
  8. --%>
  9. <jsp:include page="common/header.jsp"/>
  10. <h1>网页主体</h1>
  11. <jsp:include page="common/footer.jsp"/>

四、9大内置对象

  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application [ServletContext] 存东西
  • config [SerlvetConfig]
  • out
  • page
  • exception
  1. pageContext.setAttribute("name1","小帅1号"); // 保存的数据只在一个页面中有效
  2. request.setAttribute("name2","小帅2号"); // 保存的数据只在一次请求中有效,请求转发会携带者该数据
  3. session.setAttribute("name3","小帅3号"); // 保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
  4. application.setAttribute("name4","小帅4号"); // 保存的数据只在服务器有效,从打开服务器到关闭服务器

request:客户端向服务器发送请求,产生的数据,用户看完就没有了

session:客户端向服务器发送请求,产生的数据,用户看完一会还有用

application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用

五、JSP标签、JSTL标签、EL标签

EL表达式:${ }

JSP标签

  1. <jsp:forward page="jsptag2.jsp">
  2. <jsp:param name="name" value="xiaoshuai"/>
  3. <jsp:param name="age" value="18"/>
  4. </jsp:forward>
  5. <%--取出来数据--%>
  6. <%=request.getParameter("name")%>
  7. <%=request.getParameter("age")%>

JSTL表达式

JSTL标签库的使用就是为了弥补HTML标签的不足,它自定义许多标签,可以供我们使用,标签的功能和java代码一样!

核心标签(掌握部分)

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <form action="coreif.jsp" method="get">
  3. <%--
  4. EL表达式获取表单中的数据
  5. ${param.参数名}
  6. --%>
  7. <input type="text" name="username" value="${param.username}">
  8. <input type="submit" value="登录">
  9. </form>
  10. <c:if test="${param.username=='admin'}" var="isAdmin">
  11. <c:out value="管理员欢迎您!"/>
  12. </c:if>
  13. <%--判断是否登陆(自闭合标签)--%>
  14. <c:out value="${isAdmin}"/>
  1. <%--定义一个变量score,值为85--%>
  2. <c:set var="score" value="55"/>
  3. <c:choose>
  4. <c:when test="${score>=90}">
  5. 你的成绩为优秀
  6. </c:when>
  7. <c:when test="${score>=80}">
  8. 你的成绩为一般
  9. </c:when>
  10. <c:when test="${score>=70}">
  11. 你的成绩为良好
  12. </c:when>
  13. <c:when test="${score<=60}">
  14. 你的成绩为不及格
  15. </c:when>
  16. </c:choose>
  1. <%--
  2. var, 每次遍历出来的变量
  3. items,要遍历的对象
  4. begin, 哪里开始
  5. end, 到哪里
  6. step, 步长
  7. --%>
  8. <c:forEach var="people" items="${list}">
  9. <c:out value="${people}"/> <br>
  10. </c:forEach>
  11. <hr>
  12. <c:forEach var="people" items="${list}" begin="1" end="3" step="1">
  13. <c:out value="${people}"/> <br>
  14. </c:forEach>

格式化标签

SQL标签

XML标签