Notas de estudio de Java-Day54 Servlet y JSP (dos)



1. El papel de Servlet y JSP


Servlet: interfaz en segundo plano, proporciona datos al programa en primer plano y obtiene datos de la capa empresarial. El servlet no se utilizará para generar páginas dinámicas, sino que se utilizará para recibir solicitudes de JSP, procesar las solicitudes y luego ir a la página JSP para mostrar los resultados al cliente.

JSP: Responsable de interactuar con los usuarios, mostrar los datos y la entrada del usuario. La operación se ajusta a los hábitos del usuario y es hermosa. JSP es adecuado para generar páginas dinámicas, porque la parte estática de ellas se puede usar directamente en HTML.

En segundo lugar, la interacción entre Servlet y JSP


(1) Pasar datos de Servlet a JSP

  • Servlet: ① Establecer datos a través del método setAttribute de la solicitud de objeto incorporado (HttpServletRequest). ② Configure los datos a través del método setAttribute de la sesión de objeto incorporada (HttpSession).

  • JSP: ① Obtiene datos a través del método getAttribute de la solicitud de objeto incorporada (HttpServletRequest). ② Obtenga datos a través del método getAttribute de la sesión de objeto incorporada (HttpSession).

(2) Pasar datos de JSP a Servlet

  • JSP: ① Envíe el formulario. ② valor de transferencia de URL (similar al envío de obtención del formulario).

  • Servlet: ① Obtener parámetros de solicitud (cadena única) a través del método getParameter de la solicitud de objeto incorporada (HttpServletRequest). ② Obtenga los parámetros de la solicitud (matriz de cadenas) a través del método getParameterValues ​​de la solicitud de objeto incorporada (HttpServletRequest).

Nota:

① Si el valor obtenido es un valor nulo, puede agregar una instrucción if en el código para determinar si el valor obtenido es nulo. Cree una variable cuyo valor predeterminado sea una cadena vacía. Si el valor de juicio no es nulo, asigne el valor obtenido al monto del cambio.

② Si hay caracteres chinos confusos, el formato de codificación de la solicitud debe establecerse en utf-8 (solo válido para publicación) al comienzo del programa, y ​​el método de envío de formularios de JSP debe establecerse en publicación. El formato de codificación en JSP también debe establecerse en utf-8.

	request.setCharacterEncoding("utf-8");
	
	String keywords="";
	if(request.getParameter("keywords")!=null) {
    
    
		keywords = request.getParameter("keywords");
	}

Tres, el modo de salto entre Servlet y JSP

1. Adelante


Reenvío: La velocidad es rápida y la barra de direcciones permanece inalterada. Es el comportamiento interno del servidor y no tiene nada que ver con el navegador. El navegador solo obtiene los datos pasados ​​por el servidor. Solo se puede reenviar dentro del proyecto actual.

El reenvío de solicitudes también se denomina reenvío directo (Reenvío), el cliente y el navegador solo envían una solicitud una vez, Servlet, HTML, JSP u otros recursos de información, el segundo recurso de información responde a la solicitud, en la solicitud de objeto de solicitud, el objeto guardado Para cada recurso de información se comparte.

Tenga en cuenta el método de reenvío uno:

La interfaz RequestDispatcher define el método de reenvío de solicitudes:

Declaración de método Descripción del método
adelante (solicitud ServletRequest, respuesta ServletResponse) Reenvíe la solicitud a otros recursos del servidor, incluidos otros Servlet, JSP, etc.

Para utilizar el método de reenvío, primero debe obtener el objeto RequestDispatcher. El método para obtener este objeto se proporciona en la interfaz de solicitud ServletRequest:

Declaración de método Descripción del método
RequestDispatcher getRequestDispatcher (ruta java.lang.String) Utilice la ruta para devolver un objeto RequestDispatcher.
	// 从servlet跳转到jsp页面
	request.getRequestDispatcher("a.jsp").forward(request, response);

Realización del método de reenvío dos: jsp dynamic.

	<jsp:forward page="url地址"></jsp:forward>

2. Redirigir


Redirección: la velocidad es rápida, la barra de direcciones cambiará y cada solicitud de redirección está relacionada con el navegador y se puede redirigir a cualquier página (las páginas que no están en el proyecto actual también se pueden redirigir).

La redirección también se denomina método de reenvío indirecto (Redirect), que en realidad son dos solicitudes HTTP. Cuando el servidor responde a la primera solicitud, el navegador enviará una solicitud a otra URL para lograr el propósito de reenvío.

Logra el método de redireccionamiento uno:

El método de redirección se proporciona en la interfaz de respuesta HttpServletResponse:

Declaración de método Descripción del método
void sendRedirect (java.lang.String ubicación) Redirigir a la dirección de la ubicación equivale a que el cliente vuelva a solicitar el recurso en la ubicación.
	response.sendRedirect("a.jsp");

Realización del método de redirección 2: html a tag.

	<a href="url地址"></a>

Realización del método de redirección 3: solicitud de obtención de formulario (la publicación no es redirección).

   <form action="ts.do" method="get"></form>

Realización del método de redirección cuatro: etiqueta jstl.

	<c:redirect url="ts.do"></c:redirect>

Implementación del método de redirección cinco: redirección javascript.

	<script>
		location.href="ts.do";
	</script>

3. Salte entre Servlet y JSP

3.1, salto de servlet a JSP


(1) Reenvío (solo reenviado al archivo del proyecto actual, los datos se pueden transportar)

	request.setAttribute("list", list);
	request.getRequestDispatcher("index.jsp").forward(request, response);

(2) Redirección (se puede redirigir a este archivo de proyecto oa la dirección URL de un proyecto externo)

	response.sendRedirect("../../../../admin/admin.jsp");

3.2, JSP salta a Servlet


(1) Reenvío (solo reenviado al archivo del proyecto actual, los datos se pueden transportar)

  1. método uno:
	<% 
		request.setAttribute("key", "value");
		request.getRequestDispatcher("ts1.do").forward(request, response);
	%>
  1. Camino dos:
	<jsp:forward page="ts1.do"></jsp:forward>

(2) Redirección (se puede redirigir a este archivo de proyecto oa la dirección URL de un proyecto externo)

  1. método uno:
	<%
		response.sendRedirect("ts1.do");
	%>
  1. Camino dos:
	<a href="ts1.do" >跳转到servlet</a>
  1. Camino tres:
	<form action="ts1.do" method="get"></form>
  1. Camino cuatro:
	<script>
		location.href="ts1.do?...";
	</script>
  1. Camino cinco:
	<c:redirect url="ts.do"></c:redirect>

Cuarto, la forma en que el cliente accede al Servlet del lado del servidor


Hay tres formas para que el cliente acceda al Servlet del lado del servidor, a saber:

(1) Ingrese la URL directamente desde la barra de direcciones para acceder: use directamente la URL para acceder, es el método GET y se llama al método doGet.

(2) Haga clic en el hipervínculo en la página web para visitar: la visita del hipervínculo está en el modo GET y se llama al método doGet.

  • En html o JSP:
   <!-- 传递数据的方式: url传值 ?key=value&key=value key为参数名 -->
   <a href="a.do?name=tom&pwd=123456">提交请求到Servlet</a>
  • En el método doGet de Servlet:
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//获取url传递过来的值
		String name = request.getParameter("name");//变量name的值为tom
		String pwd = request.getParameter("pwd");//变量pwd的值为123456
		System.out.println("name :"+name+", pwd :"+pwd);
	}

(3) Acceso a través del envío del formulario en la página web: el acceso al envío del formulario depende del valor del atributo del método del formulario, el valor predeterminado es get, y cuando se especifica como post, se llama al método doPost.

  • En html o JSP:
   <!-- 传递数据的方式: 表单传值 get方法 ?key=value&key=value  key为参数名 -->
   <form action="ts.do" method="get">
     <input type="text"  name="name" value="tom"><br/>
     <input type="password"  name="pwd" value="123456"><br/>
     <input type="submit" value="提交">
   </form>
  • En el método doGet de Servlet:
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//获取url传递过来的值
		String name = request.getParameter("name");//变量name的值为tom
		String pwd = request.getParameter("pwd");//变量pwd的值为123456
		System.out.println("name :"+name+", pwd :"+pwd);
	}

Supongo que te gusta

Origin blog.csdn.net/qq_42141141/article/details/111601708
Recomendado
Clasificación