2.1 JSP-direktiv
Eftersom vi fick reda på att JSP-filen konverteras till en vanlig servlet, kan du skriva normal Java-kod i den. Och i den här Java-koden kan du använda olika klasser (Matte från exemplet). Det här är ännu bättre! Men vi kan se att all kod har flyttats till en doGet()
servletmetod. Och detta väcker genast flera frågor:
- Hur gör man så att koden flyttas till metoden
doPost()
? - Hur lägger man till sin egen kod till metoden
init()
? - Hur registrerar man i slutändan klassimporter?
Bra frågor, och naturligtvis har de ett svar - JSP-direktiv. All icke-HTML-kod inom en JSP måste omges av speciella parenteser <%
och %>
. Alla JSP-direktiv ges av en mall:
<%@ directive %>
Här är en lista över de mest populära siddirektivens attribut:
Exempel | Beskrivning | ||
---|---|---|---|
1 | importera | <%@ page import="java.util.Date" %> |
Importerar en klass |
2 | innehållstyp | <%@ page contentType=text/html %> |
Ställer in contentType |
3 | sträcker sig | <%@ page extends="Object" %> |
Du kan ställa in basklassen |
4 | info | <%@ page info="Author: Peter Ivanovich; version:1.0" %> |
Ställer in data för getServletInfo() |
5 | buffert | <%@ page buffer="16kb" %> |
Ställer in storleken på svarsbufferten |
6 | språk | <%@ page language="java" %> |
Anger språket, standard är Java |
7 | Ignoreras | <%@ page isELIgnored="true" %> |
Låter dig inaktivera EL-skript |
8 | är ThreadSafe | <%@ page isThreadSafe="false" %> |
Pekar på trådsäker |
9 | autoFlush | <%@ page autoFlush="false" %> |
Hanterar buffertskrivningar |
10 | session | <%@ page session="false" %> |
Du kan inaktivera sessionen för sidan |
elva | sidakodning | <%@ page pageEncoding="UTF-8"%> |
Du kan ställa in sidkodningen |
12 | felsida | <%@ page errorPage="errorpage.jsp" %> |
Du kan ställa in en felsida |
2.2 Import
Låt oss lägga till några importer till vår JSP-fil för skojs skull och definiera en basklass.
JSP fil exempel:
<%@ page import="java.util.Date" %>
<%@ page import="java.lang.Math" %>
<%@ page extends="com.codegym.MyHttpServlet" %>
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Och det här är vad det kommer att bli:
import java.util.Date;
import java.lang.Math;
public class HelloServlet extends com.codegym.MyHttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body> ");
double num = Math.random();
if (num > 0.95) {
out.print("<h2> You're lucky, user! </h2> <p> (" + num + ")</p> ");
}
out.print("</body> ");
out.print("</html> ");
}
}
Arbetar. Bra!