Jsp

1. 什么是JSP

​ Java Server Page:java服务器端页面,和Servlet一样,用于动态web技术。

​ 其最大的特点是:

  • 写JSP页面就像在写HTML代码;
  • JSP页面中可以嵌入java代码,为用户提供动态数据;

2. JSP原理

在目录下:C:\Users\yang\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat保存着Idea的临时数据文件

\tomcat\Unnamed_java-web-subms\work\Catalina\localhost\java_web_subms_war\org\apache\jsp中存在着java和class文件

点开java文件后,发现是将JSP代码转换为Servlet代码,因此JSP本质上就是Servlet

只有当访问对应的JSP文件时,才会生成相应的.java和.class代码。

image-20210104204841085

image-20210104204828547

JSP中内置了几个对象:

final javax.servlet.jsp.PageContext pageContext;   // 页面上下文
javax.servlet.http.HttpSession session = null;	   // session
final javax.servlet.ServletContext application;	   // appliactionContext
final javax.servlet.ServletConfig config;		  // config
javax.servlet.jsp.JspWriter out = null;			  // out
final java.lang.Object page = this;				  // page:当前页面
HttpServletRequest request
HttpServletResponse response

3. JSP基本语法

3.1 JSP表达式

<%= %>直接输出内容:

<%= new java.util.Date()%>

${}El 表达式:

${new java.util.Date()}
  • 获取数据
  • 执行运算
  • 获取web开发的常用对象
3.2 JSP代码片段

<% %>写一段java代码:

<%
  int sum = 0;
  for (int i = 0; i < 10; i++) {
    sum += i;
  }
  out.print(sum);
%>
3.3 JSP声明

<%! %>可以定义方法和变量,编译到JSP生成的java类中

<%!
  private void print(){
    System.out.print("hello");
  }
%>

image-20210104211545056

从上图可知,声明中定义的变量和函数都在类中,其他的都在_jspService()方法中。

image-20210104211725479

3.4 JSP指令
  1. JSP页面的一些配置<%@page%>

image-20210104213321143

  1. 导入其他公共的页面<%@include%>,注意,这是页面的导入,将其他页面的代码导入到当前代码中,可能会出现变量冲突。

    image-20210104213456142

3.5 错误页面
  1. 在web.xml中配置error-page,web.xml中默认的文件路径为web/,因此只用/error即可,不用…/到上一级寻找

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>
    
  2. 使用jsp的<%@ page errorPage= %>,若页面出现代码错误,将会导向500页面

    <%@ page errorPage="/error/500.jsp"%>
    

4. 九大内置对象

  • PageContext:页面作用域,保存的数据只在一个页面生效
    • pageContext.forward():转发请求
  • request:保存的数据在一个请求中生效,可以转发请求,会携带这个数据
    • 客户端向服务器发送请求,产生的数据,用户看完就没用了,比如,新闻
  • session:保存的数据在一次session中有效,从打开浏览器到关闭
    • 客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如,登录信息
  • application:即servletContext,保存的数据在服务器中有效,从打开服务器到关闭服务器
    • 客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能用,比如:聊天数据
  • config:servletConfig
  • out:输出内容到页码
  • page:几乎不用
  • exception:与java异常类似

5. JSP标签

jsp:forward("***.jsp")

​ 转发页面,同pageContext.forward()request.getRequestDispatcher().forward(req, resp)

6. JSTL标签

6.1 核心标签

导入标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

image-20210125161434073

<%--cout的使用--%>
<c:out value="hello"></c:out>


<form action="${pageContext.request.contextPath}/jstl01.jsp">
    <%--param获取表单中的参数--%>
    用户名 <input type="text" name="username" value="${param.username}">
    <button>提交</button>
</form>

<%--cif的使用--%>
<c:if test="${param.username == 'admin' }" var="isAdmin">
    <c:out value="管理员欢迎你!"/>
</c:if>
${isAdmin}

<%--cchoose的使用--%>
<c:set var="score" value="75"/>
<c:choose>
    <c:when test="${score < 60}">
        <c:out value="不及格"/>
    </c:when>
    <c:otherwise>
        <c:out value="及格"/>
    </c:otherwise>
</c:choose>

<%--cforEach的使用--%>
<%
    ArrayList<String> list = new ArrayList<>();
    list.add("yang");
    list.add("yy");
    pageContext.setAttribute("list", list);
%>

<c:forEach var="name" items="${list}">
    <c:out value="${name}"/>
</c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值