JSP

JSP

1.1 什么是JSP

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

最大的特点:

写jsp就像写html

区别:

	HTML只给用户提供静态的数据。

	jsp页面中可以嵌入Java代码,为用户提供动态数据。

1.2 JSP原理

思路:jsp是怎么执行的!

*代码层面没有任何问题

*服务器内部工作:tomcat中有一个work目录;IDEA中使用tomcat会在IDEA中生产一个work目录

jsp本质上是一个servlet

1,判断请求

2,内置一些对象

3,输出页面前增加的代码

//初始化
public void _jspInit(){
    
}
//销毁
public void _jspDestory(){
    
}
//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;//config
javax.servlet.jsp.JspWriter out = null;//out
final java.lang.Object page = this;//page:当前
HttpServletRequest request//请求
HttpServletResponse response//响应

 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();
  _jspx_out = out;

以上这些个对象可以直接在jsp里面用

在jsp页面中,只要是java代码就会原封不懂的输出;

如果HTML代码,就会被转换成:out.write("\r\n")这样的格式输出到前端。

1.3 JSP基础语法

任何语言都有自己的语法,java中有,JSP作为java技术的一种,它拥有一些自己扩充的语法。Java语法他都支持。

JSP表达式

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

jsp脚本片段

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

<%--在代码中嵌入HTML元素--%>
<%
for(int i=0;i<6;i++){
%>
    <h1>hello,world</h1>
<%
}
%>

jsp声明

<%!
    static{
    System.out.printLn("niaho")
}
    %>

jsp声明会被编译到JSP生成java的类中,其他的,就会被生成到jspService方法中。

在jsp中嵌入代码即可。

JSP指令

<%@page  ....%>

1.4 九大内置对象

*PageContext 存东西

*Request 存东西

*Response

*Session 存东西

*Application [ServletContext]存东西

*config [ServletConfig]

*out

*page

*exception

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--内置对象--%>
<%
    pageContext.setAttribute("name1","安安1");//保存的数据只在一个页面中有效
    request.setAttribute("name2","安安2");//保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","安安3");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","安安4");//保存的数据只在服务器中有效,从打开服务器到关闭服务器

%>
<%--脚本片段中的代码,会被原封不动的生成到jsp.java
要求:这里面的代码,必须保证java语法的正确性--%>
<%
    //从pageContext去除,我们通过寻找的方式来
    //从底层到高层(作用域):page->reuest->session->application
    //JVM:双亲委派机制
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2") ;
    String name3 = (String) pageContext.findAttribute("name3") ;
    String name4 = (String) pageContext.findAttribute("name4");


%>
<%--使用EL表达式输出 ${}--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
</body>
</html>

1.6 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:include  拼接 --%>
--<jsp:forward page="">
<%--</jsp:forward>  跳转

JSTL表达式

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

核心标签

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

<c:out>	用于在JSP中显示数据,就像<%= ... >
<c:set>	用于保存数据
<c:remove>	用于删除数据
<c:catch>	用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>	与我们在一般程序中用的if一样
<c:choose>	本身只当做<c:when>和<c:otherwise>的父标签
<c:when>	<c:choose>的子标签,用来判断条件是否成立
<c:otherwise>	<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>	检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>	基础迭代标签,接受多种集合类型
<c:forTokens>	根据指定的分隔符来分隔内容并迭代输出
<c:param>	用来给包含或重定向的页面传递参数
<c:redirect>	重定向至一个新的URL.
<c:url>	使用可选的查询参数来创造一个URL
posted @ 2022-02-28 14:14  孤舟蓑衣客  阅读(31)  评论(0)    收藏  举报