Respuestas a problemas que puede encontrar en JSP
1. ¿Cómo mezclar Jsp y SSI #include?
HTML puro se puede incluir en JSP de la siguiente manera:
< !--#include file="datos.inc"-- >
Pero si data.inc contiene CÓDIGO JSP, podemos usar:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. ¿Cómo ejecutar un JSP seguro para subprocesos?
Simplemente agregue el siguiente comando
< %@ página esThreadSafe="false" % > </P>
3. ¿Cómo procesa JSP los datos en FORMATO HTML?
Simplemente use el objeto de solicitud incorporado, de la siguiente manera:
<%
Elemento de cadena = request.getParameter("elemento");
int cuantos = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. ¿Cómo incluir un archivo estático en JSP?
La inclusión estática es la siguiente: < %@ include file="copyright.html" % >
La inclusión dinámica es la siguiente: < jsp:include page="copyright.html" flux="true"/ > </P>
5. ¿Cómo utilizar comentarios en JSP?
Hay cuatro métodos principales:
1. < %-- y --% >
2. //
3. /**y**/
4. < !--y-- > </P>
6. ¿Cómo realizar la redirección de navegación en JSP?
Utilice el siguiente método: respuesta.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
También puede cambiar físicamente el atributo HTTP HEADER, de la siguiente manera:
<%
respuesta.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
Cadena newLocn="/newpath/index.html";
respuesta.setHeader("Ubicación",newLocn);
% > </P>
7. ¿Cómo evitar que el NAVEGADOR guarde la salida en JSP o SERVLET en CACHE?
Simplemente agregue el siguiente script al comienzo del archivo JSP:
<%
respuesta.setHeader("Cache-Control","no-store"); //HTTP 1.1
respuesta.setHeader("Pragma","sin caché"); //HTTP 1.0
Response.setDateHeader ("Expires", 0); //evita el almacenamiento en caché en el servidor proxy.
% > </P>
8. ¿Cómo configurar COOKIE en JSP?
La COOKIE se envía como parte del ENCABEZADO HTTP y se puede configurar de la siguiente manera:
<%
Cookie micookie = nueva Cookie("unNombre","un valor");
respuesta.addCookie(micookie);
% > </P>
9. ¿Cómo eliminar una COOKIE en JSP?
<%
Cookie killMyCookie = nueva Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
respuesta.addCookie(killMyCookie);
% > </P>
10. La forma de detener la ejecución de JSP durante el procesamiento de una solicitud JSP es la siguiente:
<%
si (request.getParameter("wen")! = nulo) {
//hacer algo
} demás {
devolver;
}
% > </P>
11. Cómo definir métodos en JSP Puede definir métodos, pero no puede acceder directamente a los objetos integrados de JSP, sino pasarlos a través de métodos de parámetros. como sigue:
<%!
cadena pública howBadFrom (solicitud HttpServletRequest) {
HttpSession ses = req.getSession();
...
devolver req.getRemoteHost();
}
%>
<%
out.print("en general, lao lee no es malo ");
%>
< %= howBadFrom(solicitud) % > </P>
12. Si el NAVEGADOR ha desactivado las COOKIES, ¿cómo puedo abrir SESSION en JSP para rastrear y usar la reescritura de URL, de la siguiente manera?
hola1.jsp
< %@ página sesión="true" % >
<%
Número entero = nuevo entero (100);
sesión.putvalue("núm",núm);
URL de cadena =respuesta.encodeURL("hola2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hola2.jsp
< %@ página sesión="true" % >
<%
Entero i= (Entero)session.getvalue("num");
out.println("El valor numérico en la sesión es "+i.intvalue());
% > </P>
13. ¿Se puede enviar un CORREO ELECTRÓNICO en JSP? Puede utilizar el paquete especial de SUN: paquete sun.net.smtp. El siguiente script utiliza la clase SmtpClient para enviar CORREO ELECTRÓNICO.
< %@ página import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
Cadena de=" <A href=" mailto:[email protected]">[email protected]</A >";
Cadena to=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. cn</A> ";
intentar{
Cliente SmtpClient = nuevo SmtpClient("mail.xxxxx.xxx");
cliente.de(de);
cliente.a(a);
Mensaje PrintStream = client.startMessage();
mensaje.println("Para: " + para);
message.println("Asunto: ¡Enviando correo electrónico desde JSP!");
message.println("¡Esto fue enviado desde una página JSP!");
mensaje.println();
message.println("¡Genial! :-)");
mensaje.println();
mensaje.println("Buen chico");
message.println("Estoy en genio.com");
mensaje.println();
cliente.closeServer();
}
captura (IOException e){
System.out.println("ERROR AL ENVIAR EL CORREO ELECTRÓNICO:"+e);
}
% > </P>
14. ¿Puedo llamar a una página de error JSP en SERVLET? Por supuesto que no hay problema. A continuación se muestra cómo llamar a una página de error JSP en una unidad lógica de control de SERVLET.
protegido vacío sendErrorRedirect (solicitud HttpServletRequest,
Respuesta HttpServletResponse, cadena errorPageURL,
Lanzable e)
lanza ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(solicitud,
respuesta);
} </P>
public void doPost (solicitud HttpServletRequest, respuesta HttpServletResponse) {
intentar {
//hacer algo
} captura (Excepción ex) {
intentar {
sendErrorRedirect(solicitud,respuesta,"/jsp/MyErrorPage.jsp",ex);
} captura (Excepción e) {
e.printStackTrace();
}
}
} </P>
15. ¿Cómo se comunican JSP y APPLET?
Cómo se comunica JSP con EJB SessionBean El siguiente fragmento de código proporciona una buena demostración
< %@ página import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
//Definir una referencia global a la instancia de la interfaz SessionBeanHome
CuentaHome accHome=null </P>
público vacío jspInit() {
//Obtener instancia de interfaz de inicio
ContextoInicial cntxt = nuevoContextoInicial( );
Objeto ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//Crear una instancia de SessionBean
Cuenta de cuenta = accHome.create();
// Llamar al método remoto
cuenta.hacer lo que sea (...);
// etcétera
% > </P>
16. ¿Cómo evito que se muestren campos con campos "nulos" en mis campos de texto de entrada HTML cuando uso un conjunto de resultados?
Se puede definir una función simple para lograr el propósito, de la siguiente manera:
<%!
Cadena en blanco nulo (cadena s) {
retorno (s == nulo)? "" : s;
}
% > </P>
Luego, en el FORMULARIO JSP, puedes usarlo así.
< input type="text" name="talla de zapato" value="< %=blanknull(talla de zapato)% >" > </P>
17. ¿Cómo descargar un archivo (como: binario, texto, ejecutable) en SERVLET o JSP?
Ahora se proporcionan dos soluciones:
R: Utilice HTTP,
B: En Servlet, esto se puede hacer configurando ContentType y usando Stream y otras clases del paquete java.io. Por ejemplo:
respuesta.setContentType("aplicación/x-msword");
Luego simplemente escribe algo en el búfer de salida. </P>
18. ¿Cómo aceptar parámetros de inicialización al inicializar BEAN usando el indicador useBean? Simplemente use las dos etiquetas siguientes:
< jsp:getProperty nombre="wenBean" propiedad="algunaPropiedad"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. ¿Cómo obtener información del navegador del cliente usando JSP?
Simplemente use request.getHeader(String)</P>
20. ¿Se puede llamar a JSP como una subrutina?
Por supuesto que puedes, usa< jsp:include page="relativeURL" Flush="true"/ > </P>
21. Después de recompilar una clase utilizada por mi JSP, ¿por qué la JVM continúa usando mi antigua CLASE? </P>
¿Cuál es la diferencia entre < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > y < jsp:include page="abc.jsp"/ >?
La primera es inclusión estática, mientras que la segunda es inclusión dinámica</P>
22. ¿Desventajas de JSP?
1. No hay nada bueno en depurar programas JAVA
2. Porque la mayoría de los motores de servlet no admiten la agrupación de conexiones.
3. No existe un estándar para los motores Servlet.
4. Interacción entre JSP y otros lenguajes de script</P>
23. ¿Puede JSP realizar llamadas recursivas?
Por supuesto que puedes, si envías el formulario a esta página</P>
34. ¿Cómo realizar la internacionalización de JSP?
Simplemente proporcione archivos de propiedades de paquetes de recursos para varias versiones</P>
25. ¿Cómo escribir archivos de texto en JSP?
Utilice el objeto PrintWriter, como por ejemplo:
< %@ página import="java.io.*" % >
<%
String str = "imprimirme";
Cadena nombreOfTextFile = "/usr/anil/imp.txt";
intentar {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(cadena);
pw.cerrar();
} captura (IOException e) {
out.println(e.getMessage());
}
% > </P>
26. ¿Cómo incluir archivos de ruta absoluta en JSP?
Simplemente use URLConnection. </P>
27. ¿Se pueden compartir objetos de sesión entre servlets y JSP?
seguro,
Sesión HttpSession = request.getSession (verdadero);
session.putvalue("variable","valor");
28. ¿Se pueden copiar variables de Javascript a JSP SESSION? </P>
29. ¿Cómo configurar las cookies para que caduquen después de un tiempo determinado?
Utilice Cookie.setMaxAge(int) </P>
30. ¿Cómo obtener el número actual de sesiones?
Puede utilizar HttpSessionBindingListeners para realizar un seguimiento</P>
31. ¿Puedo configurar algún código para que se ejecute en todos mis archivos JSP? Si es así, ¿se puede compartir?
Por supuesto, puede definir un alias para su archivo JSP: /jsp/=ybwen.genius.myPreprocessingServlet, y se pueden usar archivos con el prefijo /jsp/</P>
32. Para una página JSP, si varios clientes la solicitan al mismo tiempo, ¿es posible la sincronización?
¿Cuáles son los beneficios de utilizar beanName en la sintaxis jsp:useBean?
beanName usa Beans.instantiate() para inicializar el Bean </P>
33. Cuando uso < jsp:forward >, ¿la barra de direcciones del navegador no cambia?
Utilice respuesta.sendRedirect("newURL") </P>
34. ¿Cómo convertir archivos de la versión JSP 0.9 a JSP1.1?
Sólo usa sed/awk</P>
35. ¿Puedes usar JSP para establecer el foco de un campo de entrada en un FORMULARIO HTML sin usar Javascript?
De ninguna manera</P>
36. ¿Cuál es la mejor manera de conectarse a un grupo de búfer de conexión de base de datos utilizando JSP?
1. Utilice el controlador con este servicio en JDBC2.0
2. Utilice el servidor de aplicaciones que proporciona este servicio.