Respostas para problemas que você pode encontrar em JSP
1. Como misturar Jsp e SSI #include?
HTML puro pode ser incluído em JSP da seguinte forma:
< !--#include file="data.inc"-- >
Mas se data.inc contiver CÓDIGO JSP, podemos usar:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. Como executar um JSP thread-safe?
Basta adicionar o seguinte comando
< %@ página isThreadSafe="false" % > </P>
3. Como o JSP processa dados no HTML FORM?
Basta usar o objeto de solicitação integrado, como segue:
<%
String item = request.getParameter("item");
int howMany = new Integer(request.getParameter("unidades")).intvalue();
%></P>
4. Como incluir um arquivo estático em JSP?
A inclusão estática é a seguinte: < %@ include file="copyright.html" % >
A inclusão dinâmica é a seguinte: < jsp:include page="copyright.html" flush="true"/ > </P>
5. Como usar comentários em JSP?
Existem quatro métodos principais:
1. <%-- e --% >
2. //
3. /**e**/
4. < !--e-- > </P>
6. Como realizar o redirecionamento de navegação em JSP?
Use o seguinte método: response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
Você também pode alterar fisicamente o atributo HTTP HEADER, da seguinte forma:
<%
resposta.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn="/newpath/index.html";
resposta.setHeader("Localização",newLocn);
%></P>
7. Como evitar que a saída em JSP ou SERVLET seja salva em CACHE pelo BROWSER?
Basta adicionar o seguinte script ao início do arquivo JSP:
<%
response.setHeader("Cache-Control","no-store");
resposta.setHeader("Pragma","sem cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //impede o cache no servidor proxy
%></P>
8. Como definir COOKIE em JSP?
COOKIE é enviado como parte do HTTP HEADER e pode ser definido da seguinte forma:
<%
Cookie meucookie = new Cookie("aNome","avalor");
resposta.addCookie(meucookie);
%></P>
9. Como deletar um COOKIE em JSP?
<%
Cookie killMyCookie = new Cookie("meucookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
resposta.addCookie(matarMeuCookie);
%></P>
10. Como interromper a execução de JSP durante o processamento de uma solicitação JSP é o seguinte:
<%
if (request.getParameter("wen") != null) {
//fazer algo
} outro {
retornar;
}
%></P>
11. Como definir métodos em JSP Você pode definir métodos, mas não pode acessar diretamente os objetos internos do JSP, mas passá-los por meio de métodos de parâmetro. do seguinte modo:
<%!
public String howBadFrom(HttpServletRequest req) {
HttpSession ses = req.getSession();
...
retornar req.getRemoteHost();
}
%>
<%
out.print("em geral, lao lee não é o vilão ");
%>
< %= howBadFrom(solicitação) % > </P>
12. Se o BROWSER desativou os COOKIES, como posso abrir SESSION em JSP para rastrear e usar a reescrita de URL, da seguinte forma:
olá1.jsp
< %@ sessão da página = "true" % >
<%
Num inteiro = novo inteiro (100);
sessão.putvalue("num",num);
String url =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
olá2.jsp
< %@ sessão da página = "true" % >
<%
Inteiro i= (Inteiro)session.getvalue("num");
out.println("O valor numérico na sessão é "+i.intvalue());
%></P>
13. O EMAIL pode ser enviado em JSP. Você pode usar o pacote especial da SUN: pacote sun.net.smtp. O script a seguir usa a classe SmtpClient para enviar EMAIL.
< %@ página import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
String from=" <A href=" mailto:[email protected]">[email protected]</A >";
String to=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. cn</A >";
tentar{
Cliente SmtpClient = new SmtpClient("mail.xxxxx.xxx");
cliente.de(de);
cliente.para(para);
Mensagem PrintStream = client.startMessage();
mensagem.println("Para: " + para);
message.println("Assunto: Enviando e-mail do JSP!");
message.println("Isto foi enviado de uma página JSP!");
mensagem.println();
message.println("Legal! :-)");
mensagem.println();
mensagem.println("Bom menino");
message.println("Estou em genial.com");
mensagem.println();
cliente.closeServer();
}
pegar (IOException e){
System.out.println("ERRO ENVIANDO E-MAIL:"+e);
}
%></P>
14. Posso chamar uma página de erro JSP no SERVLET É claro que não há problema. A seguir é mostrado como chamar uma página de erro JSP em uma unidade lógica de controle do SERVLET.
protegido void sendErrorRedirect (solicitação HttpServletRequest,
Resposta HttpServletResponse, String errorPageURL,
Arremessável e)
lança ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(solicitação,
resposta);
} </P>
public void doPost(solicitação HttpServletRequest, resposta HttpServletResponse) {
tentar {
//fazer algo
} catch (Exceção ex) {
tentar {
sendErrorRedirect(solicitação,resposta,"/jsp/MyErrorPage.jsp",ex);
} catch (Exceção e) {
e.printStackTrace();
}
}
} </P>
15. Como o JSP e o APPLET se comunicam?
Como o JSP se comunica com o EJB SessionBean O trecho de código a seguir fornece uma boa demonstração
< %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account"% >
<%!
//Define uma referência global para a instância da interface SessionBeanHome
ContaHome accHome=null;
public void jspInit() {
//Obter instância da interface Home
InitialContext cntxt = new InitialContext();
Objeto ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//Instancia o SessionBean
Conta conta = accHome.create();
//Chama o método remoto
conta.doQualquer(...);
// e assim por diante
%></P>
16. Como evito que campos com campos "nulos" sejam exibidos em meus campos de texto de entrada HTML quando uso um conjunto de resultados?
Uma função simples pode ser definida para atingir o objetivo, como segue:
<%!
String blanknull(String s) {
retornar (s == nulo) "": s;
}
%></P>
Então no JSP FORM, você pode usar assim
< input type="text" name="tamanho do sapato" value="< %=blanknull(tamanho do sapato)% >" > </P>
17. Como baixar um arquivo (como: binário, texto, executável) em SERVLET ou JSP?
Duas soluções são agora fornecidas:
R: Use HTTP,
B: No Servlet, isso pode ser feito definindo ContentType e usando Stream e outras classes do pacote java.io.
resposta.setContentType("aplicativo/x-msword");
Depois é só escrever algo no buffer de saída. </P>
18. Como aceitar parâmetros de inicialização ao inicializar o BEAN usando o sinalizador useBean? Basta usar as duas tags a seguir:
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. Como obter informações do navegador do cliente usando JSP?
Basta usar request.getHeader(String)</P>
20. O JSP pode ser chamado como uma sub-rotina?
Claro que você pode, use< jsp:include page="relativeURL" flush="true"/ > </P>
21. Depois de recompilar uma classe usada pela minha JSP, por que a JVM continua a usar minha antiga CLASS? </P>
Qual é a diferença entre < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > e < jsp:include page="abc.jsp"/ >?
A primeira é a inclusão estática, enquanto a segunda é a inclusão dinâmica</P>
22. Desvantagens do JSP?
1. Não há coisas boas em depurar programas JAVA
2. Porque a maioria dos mecanismos de servlet não suporta pool de conexões
3. Não existe um padrão para motores Servlet
4. Interação entre JSP e outras linguagens de script</P>
23. O JSP pode fazer chamadas recursivas?
Claro que você pode, se enviar o formulário para esta página</P>
34. Como concretizar a internacionalização do JSP?
Basta fornecer arquivos de propriedades de pacotes de recursos para várias versões</P>
25. Como escrever arquivos de texto em JSP?
Use o objeto PrintWriter, como:
< %@ página import="java.io.*" % >
<%
String str = "imprima-me";
String nameOfTextFile = "/usr/anil/imp.txt";
tentar {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
println(str);
close();
} catch(IOException e) {
out.println(e.getMessage());
}
%></P>
26. Como incluir arquivos de caminho absoluto em JSP?
Basta usar URLConnection. </P>
27. Os objetos de sessão podem ser compartilhados entre servlets e JSP?
claro,
Sessão HttpSession = request.getSession(true);
session.putvalue("variável","valor");
28. Variáveis Javascript podem ser copiadas para JSP SESSION? </P>
29. Como configurar os cookies para expirarem após um determinado tempo?
Use Cookie.setMaxAge(int)</P>
30. Como obter o número atual de sessões?
Você pode usar HttpSessionBindingListeners para rastrear</P>
31. Posso configurar algum código para ser executado em todos os meus arquivos JSP? Se sim, pode ser compartilhado?
Claro, você pode definir um alias para seu arquivo JSP: /jsp/=ybwen.genius.myPreprocessingServlet, e arquivos prefixados com /jsp/ podem ser usados</P>
32. Para uma página JSP, se vários clientes a solicitarem ao mesmo tempo, a sincronização será possível?
Quais são os benefícios de usar beanName na sintaxe jsp:useBean?
beanName usa Beans.instantiate() para inicializar o Bean </P>
33. Quando uso < jsp:forward >, a barra de endereço do navegador não muda?
Use resposta.sendRedirect("newURL") </P>
34. Como converter arquivos da versão JSP 0.9 para JSP1.1?
Basta usar sed/awk</P>
35. Você pode usar JSP para definir o foco de um campo de entrada em um FORM HTML sem usar Javascript?
De jeito nenhum</P>
36. Qual é a melhor maneira de conectar-se a um buffer pool de conexão de banco de dados usando JSP?
1. Use o Driver com este serviço em JDBC2.0
2. Use o servidor de aplicativos que fornece este serviço