javaweb:jsp

什么是JSP

Java Server Pages:Java服务器端页面,也和servlet一样用于开发动态web
特点:
①写JSP就像在写html
②区别:html只给用户提供静态数据,JSP页面中可以嵌入JAVA代码,为用户提供动态数据

JSP原理

思路:JSP执行方式

浏览器向服务器发送请求,不管访问什么资源,都是在访问servlet
JSP最终也会被转换为一个java类
JSP本质上就是一个servlet
初始化

public void _jspInit(){
}

销毁

public void _jspDestroy(){
}

调用

public void _jspService(final javax.servlet.http.HttpServletRequest request,final javax.servlet.http.HttpServletResponse response)
Throws java.io.IOException,javax.servlet.Servlet.ServleException{
}

①判断请求
②内置一些对象

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;	//响应
javax.servlet.jsp.JspWriter _jsp_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;

③输出页面前增加的代码

Response.setContent(“text/html);	//设置响应的页面类型
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();
_jspx_out = out;

这些对象可以在jsp中直接使用

在这里插入图片描述

在JSP页面中
只要是java代码就会原封不动的输出
如果是java代码,就会被转换为:

Out.write(<html>\r\n”);

这样的格式输出

JSP基础语法

任何语言都有自己的语法,JSP作为java技术的一种应用,它拥有一些自己扩充的语法,java所有的语法都支持

JSP表达式

<%--JSP表达式--%>
<%--用来将程序的输出,输出到客户端--%>
<%= new java.util.Date()%>

jsp脚本片段

<%--jsp脚本片段--%>
<%
  int sum = 0;
  for(int i = 0 ; i < 100 ; i++){
    sum += i;
  }
  out.println("<h1>Sum="+sum+"</h1>");
%>

脚本片段的再实现

<%
    int x = 10;
    out.print(x);
  %>
  <p>这是一个jsp文件</p>
  <%
    int y = 2;
    out.println(x+y);
  %>

  <hr>
  <%--在代码中嵌入HTML元素--%>
  <%
    for(int i = 0 ; i < 5 ; i++){
  %>
  <h1>hello,world<%= new java.util.Date()%>></h1>
<%
  }
%>

jsp声明

<%!
  static{
    System.out.println("Loading jsp");
  }

  private int globalvar = 0;

  public void test(){
    System.out.println("进入了方法test");
  }
%>

JSP声明:会被编译到JSP生成java的类中;其他的会被生成到_jspService方法中

在jsp中嵌入java代码即可

jsp的注释不会在客户端显示,html会

jsp指令

<%@page ... %>
<%@include file=””>

在这里插入图片描述

9大内置对象

PageContext 存东西
Request 存东西
Response
Session 存东西
Application(ServletContext) 存东西
config(ServletConfig)
Out
Page 不用了解
Exception

pageContext.setAttribute("name1","test1");//只在页面中有效
    request.setAttribute("name2","test2");//保存的数据只在一次请求中有效,请求转发会携带这个诗句
    session.setAttribute("name3","test3");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","test4");//保存的数据只在服务器中有效,从打开服务器到关闭服务器

Request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如新闻
Session:客户端向服务器发送请求,产生的数据,用户用完一会还有用的,比如购物车
Application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户可能还使用,比如聊天记录

JSP标签、JSTL标签、EL表达式

<dependency>
    <!--JSTL 表达式依赖-->
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <!--standard标签-->
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

EL表达式 ${}

①获取数据
②获取web开发的常用对象
③获取web开发的常用对象

JSP标签

<%--jsp:include--%>

<%--
http://localhost:8080/javaweb_jsp_war_exploded/jspTag.jsp?name1=value1&name2=valu2
--%>
<jsp:forward page="/jspTag2.jsp">
    <jsp:param name="name1" value="value1"></jsp:param>
    <jsp:param name="name2" value="value2"></jsp:param>
</jsp:forward>

JSTL表达式

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

核心标签

引用

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

在这里插入图片描述

JSTL标签库使用步骤
①引入对应的taglib
②使用其中的方法

coreif

<body>
<h4>if测试</h4>
<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}" />

</body>

在这里插入图片描述

corewhen

<body>
<%--定义一个变量score,值为85--%>
<c:set var="score" value="95" />
<c:choose>
    <c:when test="${score>=90}">
        <h1>你的成绩为优秀</h1>
    </c:when>
    <c:when test="${score>=80}">
        <h1>你的成绩为良好</h1>
    </c:when>
    <c:when test="${score>=70}">
        <h1>你的成绩为合格</h1>
    </c:when>
</c:choose>
</body>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值