JAVAWEB-JSP, las tres instrucciones principales de JSP, nueve objetos implícitos, etiquetas de acción

1. El principio operativo de jsp: la esencia de jsp es servlet (entrevista)

Jsp será traducido a un servlet por el contenedor web y luego se ejecutará cuando se acceda a él por primera vez

Proceso:
Primera visita -> helloServlet.jsp (Traducido a Servlet) ——> helloServlet_jsp.java (Servlet compilado) ——> Compilar y ejecutar

PD: el servlet traducido se puede encontrar en el directorio de trabajo de Tomcat

Dos, scripts jsp y comentarios

secuencia de comandos jsp :

  • <% java代码 %> —— El código java interno se traduce al método de servicio
  • <%=java变量或表达式> ——Traducido a out.print () dentro del método de servicio, contenido de salida directamente
  • <% ! java代码%>-Traducido al contenido de los miembros del servlet.

jsp note : el rango visible de diferentes notas es diferente

  • Notas de HTML: <!--注释内容-->—— Alcance visible: código fuente jsp, servlet traducido, visualización de la página del navegador código fuente html

  • Notas de Java: //单行注释 /*多行注释*/—— Alcance visible: servlet traducido del código fuente jsp

  • jsp notas: <%--注释内容--%>——Rango visible: el código fuente JSP es visible

Caso:

<%@ page contentType="text/html;charset=UTF-8"language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <!--html注释-->
  <h1>
    JSP页面
  </h1>
  <%
    int i=0;
    System.out.println(i);
  %>
  <%=i%>
  <%=1+1%>
   //java注释
    /*java多行注释*/
  <%--jsp注释--%>
  <%!
     String str = "hello china";
  %>
  <%=str %>
  </body>
</html>

3. Instrucción JSP- (tres instrucciones principales)

Las instrucciones de jsp son comandos que guían la traducción y operación de jsp. Jsp incluye tres instrucciones principales:

Instrucción 1.page

  • page指令——La instrucción con más atributos (la instrucción de página es la predeterminada en el desarrollo real)
    La instrucción con más atributos guía las características de toda la página de acuerdo con diferentes atributos
  • formato:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>

Los atributos comunes son los siguientes

  • language: Tipos de lenguajes que se pueden incrustar en scripts jsp
  • pageEncoding: La codificación del archivo jsp actual — contentType se puede incluir dentro
  • contentType: Response.setContentType (texto / html; juego de caracteres = UTF-8)
  • session: Si jsp crea automáticamente una sesión durante la traducción
  • import: Importa el paquete java. Por ejemplo, si desea importar una lista, se informará un error y el paquete no se importará al principio.
  • errorPage: A qué página saltar cuando la página actual falla.
  • isErrorPage: La página actual es una página de manejo de errores. Por ejemplo: cuando error.jsp = ”true”. Indica que actualmente es una página de error.
  • extends: Por ejemplo, escriba "java.util.ArrayList". En este momento, el archivo jsp informará un error. No se usa comúnmente en el desarrollo y generalmente no se hereda de manera casual.

Caso:

Nota: preste atención a algunas instrucciones de página comunes en jsp y, al mismo tiempo, configuramos la página actual como una página que maneja errores

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true" isErrorPage="true"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%List<String> list =new ArrayList<String>(); %>
<%session.setAttribute("name","zhangsan"); %>
<% out.print("this is errorPage"); %>
</body>
</html>

Nota: En este momento, cuando accedamos a recursos que no existen en el proyecto, saltaremos a la página actual.Y necesitamos web.xmlescribir algo de la siguiente manera:

  <error-page>
        <error-code>404</error-code>
        <location>/jspdemo.jsp</location> <!--表示jsp的文件名-->
    </error-page>

El efecto es el siguiente:

Inserte la descripción de la imagen aquí

2. incluir directiva

La página incluye instrucciones (inclusión estática), puede incluir una página jsp en otra página jsp

formato:<%@ include file="被包含的文件地址"%>

Por ejemplo: creamos un demo.jsp y escribimos en index.jsp

<body>
<%@include file="demo.jsp"%>
</body>

En este punto, visitamos index.jsp, el contenido del interior contendrá el contenido de demo.jsp

3. instrucciones taglib

Introduzca la biblioteca de etiquetas (biblioteca de etiquetas jstl, biblioteca de etiquetas struts2) en la página jsp

formato:<%@ taglib uri="标签库地址" prefix="前缀"%>

Similar a la introducción de archivos CSS y JavaScript en la interfaz

Cuatro objetos .jsp incorporados / implícitos (9) - (importante)

Después de que jsp se traduce a servlet, hay 9 objetos definidos e inicializados en el método de servicio, podemos usar estos 9 objetos directamente en el script jsp

nombre Tipos de descripción
fuera javax.servlet.jsp.JspWriter Para salida de página
solicitud javax.servlet.http.HttpServletRequest Obtener información de solicitud de usuario
respuesta javax.servlet.http.HttpServletResponse El mensaje de respuesta del servidor al cliente.
config javax.servlet.ServletConfig Configuración del servidor, se pueden obtener los parámetros de inicialización
sesión javax.servlet.http.HttpSession Se utiliza para guardar la información del usuario.
solicitud javax.servlet.ServletContext Información compartida para todos los usuarios
página java.lang.Object Se refiere a la instancia de la clase Servlet convertida de la página actual (observe el comienzo del caso a continuación)
pageContext javax.servlet.jsp.PageContext Contenedor de página JSP
excepción java.lang.Throwable Indica la excepción que ocurrió en la página JSP, que solo funciona en la página de error.

1. fuera de objeto

Tipo de salida: JspWriter

El papel de out es generar contenido para el cliente-out.write ()

El búfer de salida es de 8 kb por defecto y se puede configurar en 0, lo que significa que el contenido del búfer de salida se cierra y se escribe directamente en el búfer de respuesta

Caso:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 aaaaaaaaaaaaaa
        <%   out.write("bbbbbbbbbbbbbbbbbb");
           	 response.getWriter().write("ccccccccc");
        %>
        <%="ddddddddddddd" %>
		<%  out.print("ffffffff");     %>
</body>
</html>

El efecto es el siguiente: La
Inserte la descripción de la imagen aquí
razón por la que ccccc se emite primero es:El motor Tomcat obtiene el contenido del búfer de respuesta y luego al búfer de salida

2. objeto pageContext

El objeto Page y el objeto pageContext son dos objetos, preste atención a la diferencia
El objeto de contexto (objeto pageContext) de la página jsp es el siguiente:

pageContext es un objeto de dominio

Al igual que otros ámbitos, pageContext también tiene los siguientes tres métodos:

  • setAttribute(String name,Object obj)
  • getAttribute(String name)
  • removeAttrbute(String name)

pageContext puede acceder a datos de otros dominios especificados

  • setAttribute(String name,Object obj,int scope)
  • getAttribute(String name,int scope)
  • removeAttrbute(String name,int scope)

Caso:

<body>
   <%
//使用pageContext向request域存数据
request.setAttribute("name","zhangsan");
//将name =zhangsan,设置到reques的域中,该行代码与上句代码作用一样
		pageContext.setAttribute("name","lisi",PageContext.REQUEST_SCOPE);
		//使用pageContext向session域存数据
        pageContext.setAttribute("name","wangwu",PageContext.SESSION_SCOPE);
        //使用pageContext向application域存数据
        pageContext.setAttribute("name","tianqi",PageContext.APPLICATION_SCOPE);
    %>
</body>

El objeto pageContext tiene una función más poderosa que puede encontrar automáticamente Attribute

  • findAttribute(String name)

Obtenga los atributos del dominio pageContext, el dominio de solicitud, el dominio de sesión y el dominio de la aplicación por turnos. Después de obtenerlo en un dominio determinado, no mirará hacia atrás.

Caso:

body> 
<%
 //使用pageContext向request域存数据
request.setAttribute("name","zhangsan");
//将name =zhangsan  设置到reques的域中,该行代码与上句代码作用一样 pageContext.setAttribute("name","lisi",PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("name","wangwu",PageContext.SESSION_SCOPE);
        pageContext.setAttribute("name","tianqi",PageContext.APPLICATION_SCOPE);
 %>
<%=request.getAttribute("name")%>
 //获得域中的属性
<%=request.getAttribute("name")%>>
//该方法域上面的request方法一样
<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>
//从所有域中找数据,小到大中搜索域中的范围中的name
<%--从小到大  pageContext域,request域,session域,application域--%>
<%=pageContext.findAttribute("name")%>>
</body>

Aquí hay una comparación del tamaño de un dominio.

Resumen de los cuatro alcances:

  • page域: El rango de páginas jsp actual
  • request域: Una solicitud, el reenvío múltiple también se considera una solicitud.
  • session域: Una sesión, la página se abre y la página se cierra.
  • application域: Toda la aplicación web

El objeto pageContext puede obtener otros 8 objetos implícitos

Caso:

<%
    pageContext.getOut();
    pageContext.getRequest();
    pageContext.getResponse()
%>

Five. Jsp label (acción)

  • La página contiene (inclusión dinámica):<jsp:include page="被包含的页面"/>
  • Solicitud de reenvío: la <jsp:forward page="要转发的资源" />dirección permanece sin cambios.

¿Cuál es la diferencia entre inclusión estática y dinámica?

  • Inclusión estática:<%@include file=”/”%>
  • Inclusión dinámica: la inclusión <jsp.include page =”被包含的页面”/>
    estática consiste en unir dos páginas jsp en una sola. Sin embargo, la página dinámica consta de dos páginas separadas pero no unidas.

Caso:
hacer una inclusión dinámica

Paso 1: escribe la primera página

body>
<%--include1中包含include2--%>
 <jsp:include page="include2.jsp"></jsp:include>
 <h1>This is include1 page</h1>
</body>

Paso 2: escribe la segunda página

<body>
    <h1>This is  include2 page</h1>
</body>

En este momento, cuando visitamos la primera página, se incluye el contenido de la segunda página. En realidad, hay dos páginas.

Supongo que te gusta

Origin blog.csdn.net/Mr_GYF/article/details/109176196
Recomendado
Clasificación