Tartalomjegyzék

< Java EE

Java EE Servlet

A Java EE használata

Servletet készíthetünk javaee.jar vagy a servlet-api.jar segítségével. Ha Glassfish használjuk, annak telepített helye a /usr/local/glassfish4/ akkor a javaee.jar útvonala:

/usr/local/glassfish4/glassfish/lib/javaee.jar

Ha csomagkezelő saját csomagjaiból telepítettük a tomcat szervert:

/usr/share/tomcat7/lib/servlet-api.jar

Dokumentáció:

Egyszerű példa

Servlet1.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servlet1 extends HttpServlet {
	public void doGet(HttpServletRequest request, 
					HttpServletResponse response)
					throws IOException {
		//~ request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		java.util.Date today = new java.util.Date();
		out.println("<!doctype html>\n<html>\n<head>\n" + 
					"<meta charset=\"utf-8\">\n</head>\n" +
					"<body>\n" + 
					"<h1 style='text-align:center'>Első servlet</h1>\n"
					+ today + "</body>\n" + "</html>\n");
	}
 
}
web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
			    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0"
	metadata-complete="true">
	<servlet>
		<servlet-name>Serv1</servlet-name>
		<servlet-class>Servlet1</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Serv1</servlet-name>
		<url-pattern>/Serv1</url-pattern>
	</servlet-mapping>
</web-app>
Makefile
SERVAPI=/usr/share/tomcat7/lib/servlet-api.jar
 
all:
	javac -classpath $(SERVAPI) -d classes -encoding utf8 src/Servlet1.java
 
clean:
	rm classes/*.class
 
install:
	cp classes/Servlet1.class /var/lib/tomcat7/webapps/elso/WEB-INF/classes/

Átriányítás

response.sendRedirect("http://szit.hu");

Protokoll lekérdezése

request.getProtocol()

IP cím host lekérdezése

request.getRemoteAddr()		
request.getRemoteHost()

Paraméterek átvétele

Az alábbi példában egy nagyon egyszerű azonosítást mutatok be, ahol a felhasználó név és a jelszó egy HTML oldal űrlapjáról jön.

Login.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
 
public class Login extends HttpServlet {
	public void doGet(HttpServletRequest request, 
		HttpServletResponse response) throws IOException {			
		PrintWriter out = response.getWriter();
 
		String user = request.getParameter("user");
		String pass = request.getParameter("pass");		
 
		if(user.equals("joska") && pass.equals("titok")) {
			out.println("Sikeres bejelentkezés");
		}else {
			out.println("Hiba! A bejelentkezés sikertelen!");
		}
	}	
}

Több servlet telepítője

web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
			    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0"
	metadata-complete="true">
	<servlet>
		<servlet-name>Servlet</servlet-name>
		<servlet-class>Servlet</servlet-class>		
	</servlet>
	<servlet-mapping>
		<servlet-name>Servlet</servlet-name>
		<url-pattern>/Servlet</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>Login</servlet-name>
		<servlet-class>Login</servlet-class>		
	</servlet>
	<servlet-mapping>
		<servlet-name>Login</servlet-name>
		<url-pattern>/Login</url-pattern>
	</servlet-mapping>
</web-app>

Naplózás

log("test");
tail -f /var/log/tomcat7/localhost.2015-03-29.log 
...
márc. 29, 2015 7:54:16 DU org.apache.catalina.core.ApplicationContext log
INFO: Count: test