java web(5) jsp

JSP

1.什么是JSP?

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

       最大的特点:

  1. 写jsp就像在写Html
  2. Jsp页面中可以嵌入Java代码,为用户提供动态的数据。

2.Jsp原理?

       思路:jsp到底是怎么执行的!

              代码层面没有任何问题

              服务器内部工作

                     Tomcat中有一个work目录;

                     IDEA中使用Tomcat的话会在IDEA的Tomcat中生产一个work目录。

 

 

       浏览器向服务器发送请求,不管访问什么资源,本质都是访问Servlet

       Jsp最终也会被转换成一个Java类。

       Jsp本质上就是一个servlet

 

  1. 判断请求
  2. 内置一些对象

 

  1. 输出页面前增加一些代码

 

  1. 以上这些对象都可以在jsp页面中直接使用

3.  Jsp基础语法

任何语言都有自己的语法,java中有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法(了解即可)

 

Jsp表达式

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

Jsp脚本片段

<%
    int sum=0;
    for (int i=1;i<101;i++){
        sum+=i;
    }
    out.print("<h1>sum="+sum+"</h1>");
%>
<%--jsp脚本片段实现 --%>
 <%
     for (int i = 0; i < 5; i++) {
 %>
     <h1>html</h1>
<%
     }
 %>

Jsp声明

<%!
    static {
        System.out.println("Loading Servlet");
    }
    private int globalvar=0;

    public void speak(){
        System.out.println("请说话");
    }
%>

Jsp声明:会被编译到JSP生产java的类中!其他的,就会被生成到_jspService中! 在java语言中嵌套即可。

 

Jsp注释 <% %>

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

4. jsp指令

       指定错误页面

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

 

<%-- 将两个页面合二为一--%>
<%@include file="/common/header.jsp" %>
<div></div>
<%-- 拼接页面,本质还是三个页面--%>
<jsp:include page="/common/header.jsp"></jsp:include>
<div></div>

5.jsp九大内置对象

      PageContext 存东西

       Request         存东西

       Response

       Session   存东西

       Application    (ServletContext)  存东西

       Config   (ServletConfig)

       Out

       Page

       Exception

<%-- 内置对象   --%>
<%
    pageContext.setAttribute("name1","阿军1号");  //保存的数据只在一个页面中有效
    request.setAttribute("name2","阿军2号");   //保存的数据只在一个请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","阿军3号");   //保存的数据只有在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","阿军4号");   //保存的数据只会在服务器中有效,从打开服务器到关闭浏览器
%>
<%
    //从pageContext取出,我们通过寻找的方式来
    //从底层到高层(作用域):page -> request -> session -> application
    String name1 = (String) pageContext.findAttribute("name1");
    String name2= (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String) pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");
%>

<%--从el表达式中取出来 --%>
<h1>获取的值是:</h1>
${name1}
${name2}
${name3}
${name4}
${name5}

Request:客户端向服务器发送请求,产生数据,用户看完没有用了,比如:新闻,用户看完没有用的。

Session: 客户端向服务器发送请求,产生数据,用户用户还有用,比如:购物车;

Application: 客户端向服务器发送请求,产生数据,一个用户用完了,其他用户还能使用,比如:聊天数据

6.JSP标签和JSTL标签,EL表达式

       EL表达式:${}

              获取数据

              执行运算

              获取web开发的常用对象

              获取表单的数据:${param.参数名}

              调用java方法

 <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
<dependency>
  <groupId>javax.servlet.jsp.jstl</groupId>
  <artifactId>jstl-api</artifactId>
  <version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
</dependency>

Jsp标签

        <jsp:forward page="tag.jsp">
    <jsp:param name="name" value="十三"/>
    <jsp:param name="age" value="22"/>
</jsp:forward>

JSTL

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

       核心标签(了解部分即可 )

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

 

Jstl标签使用步骤

  1. 引入 taglib
  2. 使用
3.  <h1>jstl标签</h1>
<form action="coreif.jsp" method="get">
    <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>
4.  \
5.   
<%-- 定义一个score 成绩为80--%>
<c:set var="score" value="80"></c:set>

<c:choose>
    <c:when test="${score>=90}">
        <c:out value="成绩优秀"></c:out>
    </c:when>
    <c:when test="${score>=80}">
        <c:out value="成绩良好"></c:out>
    </c:when>
    <c:when test="${score>=70}">
        <c:out value="成绩一般"></c:out>
    </c:when>
    <c:when test="${score<=60}">
        <c:out value="成绩不及格"></c:out>
    </c:when>
</c:choose>

  

<body>
    <%
        ArrayList<String> person = new ArrayList<>();
        person.add(0,"罗军");
        person.add(1,"罗成");
        person.add(2,"罗策");
        person.add(3,"罗京");
        person.add(4,"罗美罗");
        request.setAttribute("lists",person);
    %>
    <%-- var,每一次遍历出来的变量 items要遍历的对象
         begin 哪里开始   end到哪里 step步长
     --%>
    <c:forEach var="person" items="${lists}">
        <c:out value="${person}"></c:out>
    </c:forEach>
</body>

 

posted @   十三加油哦  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示