Postingan ini bertujuan untuk berbagi ilmu sekaligus syarat mendapatkan nilai Matkul Bahasa pemrogramman, Langsung aja :
- Java Servlet Filter
- Buat program “web application” baru dengan nama filterLogin. Di bawah ini adalah struktur aplikasinya :
- rubah script di index.html sebagai berikut :
Filter Login
- Tambah lagi Servlet dengan nama "LogoutServlet.java" :
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author User
*/
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet LogoutServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet LogoutServlet at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
response.setContentType("text/html");
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies){
if(cookie.getName().equals("JSESSIONID")){
System.out.println("JSESSIONID="+cookie.getValue());
break;
}
}
}
HttpSession session = request.getSession(false);
System.out.println("User="+session.getAttribute("user"));
if(session != null){
session.invalidate();
}
response.sendRedirect("index.jsp");
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
- Masih ada lg nih "RequestLoggingFilter.java" :
- ini yang terakhir, "AuthenticationFilter.java" :
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author User
*/
public class RequestLoggingFilter implements Filter {
private static final boolean debug = true;
private FilterConfig filterConfig = null;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
public RequestLoggingFilter() {
}
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
if (debug) {
log("RequestLoggingFilter:DoBeforeProcessing");
}
HttpServletRequest req = (HttpServletRequest) request;
Enumeration<String> params = req.getParameterNames();
while (params.hasMoreElements()) {
String name = params.nextElement();
String value = request.getParameter(name);
log(req.getRemoteAddr() + "::Request Params::{" + name + "=" + value + "}");
}
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
log(req.getRemoteAddr() + "::Cookie::{" + cookie.getName() + "," + cookie.getValue() + "}");
}
}
}
private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
if (debug) {
log("RequestLoggingFilter:DoAfterProcessing");
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (debug) {
log("RequestLogginFilter:doFilter()");
}
doBeforeProcessing(request, response);
Throwable problem = null;
try {
chain.doFilter(request, response);
} catch (Throwable t) {
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
if (problem != null) {
if (problem instanceof ServletException) {
throw (ServletException) problem;
}
if (problem instanceof ServletException) {
throw (IOException) problem;
}
sendProcessingError(problem, response);
}
}
public FilterConfig getFilterConfig() {
return (this.filterConfig);
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
public void destroy() {
}
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
if (filterConfig != null) {
if (debug) {
log("RequestLoggingFilter:Initializing filter");
}
}
}
@Override
public String toString() {
if (filterConfig == null) {
return ("RequestLoggingFilter()");
}
StringBuffer sb = new StringBuffer("RequestLoggingFilter()");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
public void sendProcessingError(Throwable t, ServletResponse response){
String stackTrace = getStackTrace(t);
if(stackTrace != null && !stackTrace.equals("")){
try{
response.setContentType("text/html");
PrintStream ps = new PrintStream(response.getOutputStream());
PrintWriter pw = new PrintWriter(ps);
pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n");
pw.print("<h1>The resource did not process correctly</h1>\n<pre>\n");
pw.print(stackTrace);
pw.print("</pre></body>\n</html>");
pw.close();
ps.close();
response.getOutputStream().close();
}catch(Exception ex){
}
}else{
try{
PrintStream ps = new PrintStream(response.getOutputStream());
t.printStackTrace(ps);
ps.close();
response.getOutputStream().close();
}catch(Exception ex){
}
}
}
public static String getStackTrace(Throwable t){
String stackTrace = null;
try{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
sw.close();
stackTrace = sw.getBuffer().toString();
}catch(Exception ex){
}
return stackTrace;
}
public void log(String msg){
filterConfig.getServletContext().log(msg);
}
}
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author User
*/
public class RequestLoggingFilter implements Filter {
private static final boolean debug = true;
private FilterConfig filterConfig = null;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
public RequestLoggingFilter() {
}
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
if (debug) {
log("RequestLoggingFilter:DoBeforeProcessing");
}
HttpServletRequest req = (HttpServletRequest) request;
Enumeration<String> params = req.getParameterNames();
while (params.hasMoreElements()) {
String name = params.nextElement();
String value = request.getParameter(name);
log(req.getRemoteAddr() + "::Request Params::{" + name + "=" + value + "}");
}
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
log(req.getRemoteAddr() + "::Cookie::{" + cookie.getName() + "," + cookie.getValue() + "}");
}
}
}
private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
if (debug) {
log("RequestLoggingFilter:DoAfterProcessing");
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (debug) {
log("RequestLogginFilter:doFilter()");
}
doBeforeProcessing(request, response);
Throwable problem = null;
try {
chain.doFilter(request, response);
} catch (Throwable t) {
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
if (problem != null) {
if (problem instanceof ServletException) {
throw (ServletException) problem;
}
if (problem instanceof ServletException) {
throw (IOException) problem;
}
sendProcessingError(problem, response);
}
}
public FilterConfig getFilterConfig() {
return (this.filterConfig);
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
public void destroy() {
}
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
if (filterConfig != null) {
if (debug) {
log("RequestLoggingFilter:Initializing filter");
}
}
}
@Override
public String toString() {
if (filterConfig == null) {
return ("RequestLoggingFilter()");
}
StringBuffer sb = new StringBuffer("RequestLoggingFilter()");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
public void sendProcessingError(Throwable t, ServletResponse response){
String stackTrace = getStackTrace(t);
if(stackTrace != null && !stackTrace.equals("")){
try{
response.setContentType("text/html");
PrintStream ps = new PrintStream(response.getOutputStream());
PrintWriter pw = new PrintWriter(ps);
pw.print("<html>\n<head>\n<title>Error</title>\n</head>\n<body>\n");
pw.print("<h1>The resource did not process correctly</h1>\n<pre>\n");
pw.print(stackTrace);
pw.print("</pre></body>\n</html>");
pw.close();
ps.close();
response.getOutputStream().close();
}catch(Exception ex){
}
}else{
try{
PrintStream ps = new PrintStream(response.getOutputStream());
t.printStackTrace(ps);
ps.close();
response.getOutputStream().close();
}catch(Exception ex){
}
}
}
public static String getStackTrace(Throwable t){
String stackTrace = null;
try{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
sw.close();
stackTrace = sw.getBuffer().toString();
}catch(Exception ex){
}
return stackTrace;
}
public void log(String msg){
filterConfig.getServletContext().log(msg);
}
}
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class AuthenticationFilter implements Filter {
private static final boolean DEBUG = true;
private FilterConfig filterConfig = null;
public AuthenticationFilter(){}
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException
{
if (DEBUG) {
log("AuthenticationFilter:doBeforeProcessing");
}
}
private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (DEBUG) {
log("AuthenticationFilter:doAfterProcessing");
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (DEBUG) {
log("AuthenticationFilter:doFilter");
}
doBeforeProcessing(request, response);
Throwable problem = null;
try {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String uri = req.getRequestURI();
log("Requested Resource::" + uri);
HttpSession session = req.getSession(false);
if (session == null && !(uri.endsWith("html") || uri.endsWith("LoginServlet"))) {
log("Unauthorized access request");
res.sendRedirect("index.html");
} else {
chain.doFilter(request, response);
}
} catch (Throwable t){
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
if (problem != null) {
if (problem instanceof ServletException) {
throw (ServletException) problem;
}
if (problem instanceof IOException) {
throw (IOException) problem;
}
sendProcessingError(problem, response);
}
}
public FilterConfig getFilterConfig(){
return (this.filterConfig);
}
public void setFilterConfig(FilterConfig filterConfig){
this.filterConfig = filterConfig;
}
public void destroy(){
}
public void init(FilterConfig filterConfig){
this.filterConfig = filterConfig;
if (filterConfig != null) {
if (DEBUG) {
log("AuthenticationFilter:Initializing filter");
}
}
}
public String toString()
{
if (filterConfig == null) {
return ("AuthenticationFilter()");
}
StringBuffer sb = new StringBuffer("AuthenticationFilter(");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
private void sendProcessingError(Throwable t, ServletResponse response){
String stackTrace = getStackTrace(t);
if (stackTrace != null && !stackTrace.equals("")) {
try {
response.setContentType("text/html");
PrintStream ps = new PrintStream(response.getOutputStream());
PrintWriter pw = new PrintWriter(ps);
pw.print("\n\n<title>Error</title>\n\n\n");
pw.print("<h1>");
pw.print(stackTrace);
pw.print("</pre>\n<\\html>"); // N0I18N
pw.close();
ps.close();
response.getOutputStream().close();
} catch (Exception ex){}
} else {
try {
PrintStream ps = new PrintStream(response.getOutputStream());
t.printStackTrace(ps);
ps.close();
response.getOutputStream().close();
} catch(Exception ex){}
}
}
public static String getStackTrace(Throwable t){
&LoginSuccess.jspnbsp; String stackTrace = null;
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
sw.close();
stackTrace = sw.getBuffer().toString();
} catch (Exception ex){}
return stackTrace;
}
public void log(String msg){
filterConfig.getServletContext().log(msg);
}
}
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class AuthenticationFilter implements Filter {
private static final boolean DEBUG = true;
private FilterConfig filterConfig = null;
public AuthenticationFilter(){}
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException
{
if (DEBUG) {
log("AuthenticationFilter:doBeforeProcessing");
}
}
private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (DEBUG) {
log("AuthenticationFilter:doAfterProcessing");
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (DEBUG) {
log("AuthenticationFilter:doFilter");
}
doBeforeProcessing(request, response);
Throwable problem = null;
try {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String uri = req.getRequestURI();
log("Requested Resource::" + uri);
HttpSession session = req.getSession(false);
if (session == null && !(uri.endsWith("html") || uri.endsWith("LoginServlet"))) {
log("Unauthorized access request");
res.sendRedirect("index.html");
} else {
chain.doFilter(request, response);
}
} catch (Throwable t){
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
if (problem != null) {
if (problem instanceof ServletException) {
throw (ServletException) problem;
}
if (problem instanceof IOException) {
throw (IOException) problem;
}
sendProcessingError(problem, response);
}
}
public FilterConfig getFilterConfig(){
return (this.filterConfig);
}
public void setFilterConfig(FilterConfig filterConfig){
this.filterConfig = filterConfig;
}
public void destroy(){
}
public void init(FilterConfig filterConfig){
this.filterConfig = filterConfig;
if (filterConfig != null) {
if (DEBUG) {
log("AuthenticationFilter:Initializing filter");
}
}
}
public String toString()
{
if (filterConfig == null) {
return ("AuthenticationFilter()");
}
StringBuffer sb = new StringBuffer("AuthenticationFilter(");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
private void sendProcessingError(Throwable t, ServletResponse response){
String stackTrace = getStackTrace(t);
if (stackTrace != null && !stackTrace.equals("")) {
try {
response.setContentType("text/html");
PrintStream ps = new PrintStream(response.getOutputStream());
PrintWriter pw = new PrintWriter(ps);
pw.print("\n\n<title>Error</title>\n\n\n");
pw.print("<h1>");
pw.print(stackTrace);
pw.print("</pre>\n<\\html>"); // N0I18N
pw.close();
ps.close();
response.getOutputStream().close();
} catch (Exception ex){}
} else {
try {
PrintStream ps = new PrintStream(response.getOutputStream());
t.printStackTrace(ps);
ps.close();
response.getOutputStream().close();
} catch(Exception ex){}
}
}
public static String getStackTrace(Throwable t){
&LoginSuccess.jspnbsp; String stackTrace = null;
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
sw.close();
stackTrace = sw.getBuffer().toString();
} catch (Exception ex){}
return stackTrace;
}
public void log(String msg){
filterConfig.getServletContext().log(msg);
}
}
kita lanjutkan ke tugas ke dua, yaitu "ServletContext dan Listener".
ServletContext adalah suatu interface yang digunakan untuk berkomunikasi dengan servlet container. Dalam sebuah aplikasi web hanya terdapat satu ServletContext saja, dan seluruh komponen aplikasi web dapat saling menggunakannya.
langsung ke pembuatan yaa :
- buat servlet baru dengan nama ServletContextClass dan copykan file di bawah ini :
import com.sun.jmx.snmp.Enumerated;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author User
*/
public class ServletContextClass extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ServletContextClass</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet ServletContextClass at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContext ctx = getServletContext();
ctx.setAttribute("name", "Eresha Wikrama");
out.print(ctx.getAttribute("name"));
Enumeration temp = ctx.getAttributeNames();
while(temp.hasMoreElements()){
String attrName = (String) temp.nextElement();
out.print("<br>Attribut " + attrName +", nilainya = "+ ctx.getAttribute(attrName));
}
out.print("<br><br>getServletContextName() : "+ctx.getServletContextName());
out.print("<br>" + ctx.getInitParameter("bhs1"));
Enumeration temp2 = ctx.getInitParameterNames();
while(temp2.hasMoreElements()){
String paramName = (String) temp2.nextElement();
out.print("<br>Attribut " +paramName+", nilainya = "+ ctx.getInitParameter(paramName));
}
out.print("<br>getServerInfo() : "+ ctx.getServerInfo());
out.print("<br>getRealPath() : "+ ctx.getRealPath(""));
ctx.log("Hello Word");
ctx.setAttribute("name", "Eresha Wikrama Bogor, Teknik Informatika");
ctx.setAttribute("name", null);
request.setAttribute("word", "never say give up in this world");
request.setAttribute("word", "do your best and let god do the rest");
request.setAttribute("word", null);
HttpSession session = request.getSession();
session.setAttribute("userSession", "EreshaWikramaSession");
session.setAttribute("userSession", "Mari belajar JAVA");
session.setAttribute("userSession", null);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author User
*/
public class ServletContextClass extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ServletContextClass</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet ServletContextClass at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContext ctx = getServletContext();
ctx.setAttribute("name", "Eresha Wikrama");
out.print(ctx.getAttribute("name"));
Enumeration temp = ctx.getAttributeNames();
while(temp.hasMoreElements()){
String attrName = (String) temp.nextElement();
out.print("<br>Attribut " + attrName +", nilainya = "+ ctx.getAttribute(attrName));
}
out.print("<br><br>getServletContextName() : "+ctx.getServletContextName());
out.print("<br>" + ctx.getInitParameter("bhs1"));
Enumeration temp2 = ctx.getInitParameterNames();
while(temp2.hasMoreElements()){
String paramName = (String) temp2.nextElement();
out.print("<br>Attribut " +paramName+", nilainya = "+ ctx.getInitParameter(paramName));
}
out.print("<br>getServerInfo() : "+ ctx.getServerInfo());
out.print("<br>getRealPath() : "+ ctx.getRealPath(""));
ctx.log("Hello Word");
ctx.setAttribute("name", "Eresha Wikrama Bogor, Teknik Informatika");
ctx.setAttribute("name", null);
request.setAttribute("word", "never say give up in this world");
request.setAttribute("word", "do your best and let god do the rest");
request.setAttribute("word", null);
HttpSession session = request.getSession();
session.setAttribute("userSession", "EreshaWikramaSession");
session.setAttribute("userSession", "Mari belajar JAVA");
session.setAttribute("userSession", null);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Lalu buat file dengan nama ServletContextListenerClass.java, kemudian rubah menjadi :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.ServletContext;
/**
* Web application lifecycle listener.
* @author user
*/
@WebListener()
public class ServletContextListenerClass implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
if (ctx != null) {
ctx.log("Context : " + ctx.getServletContextName() + " sudah diinisialisasi");
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
if (ctx != null) {
ctx.log("Context : " + ctx.getServletContextName() + " sudah dihancurkan");
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.annotation.WebListener;
import javax.servlet.ServletContext;
/**
* Web application lifecycle listener.
* @author user
*/
@WebListener()
public class ServletContextAttributeListenerClass implements javax.servlet.ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
ServletContext ctx=event.getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "attribute " + event.getName() + " dengan nilai : " + event.getValue()
+ " sudah ditambahkan");
}
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
ServletContext ctx=event.getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "attribute " + event.getName() + " dengan nilai : " + event.getValue()
+ " sudah dihapus");
}
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
ServletContext ctx=event.getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "attribute " + event.getName() + " dengan nilai : " + event.getValue()
+ " sudah diubah");
}
}
}
buat lagi file dengan nama ServletRequestListenerClass.java, lalu rubah menjadi :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletRequestEvent;
import javax.servlet.annotation.WebListener;
import javax.servlet.ServletContext;
/**
* Web application lifecycle listener.
* @author user
*/
@WebListener()
public class ServletRequestListenerClass implements javax.servlet.ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
ServletContext ctx=sre.getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "request " + sre.getServletRequest() + " sudah dihancurkan");
}
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
ServletContext ctx=sre.getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "request " + sre.getServletRequest() + " sudah diinisialisasi");
}
}
}
buat lagi file dengan nama ServletRequestAttributeListenerClass.java, rubah menjadi :
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Web application lifecycle listener.
*
* @author user
*/
public class ServletRequestAttributeListenerClass implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent event) {
System.out.print(“Attribute ditambahakan : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
import javax.servlet.ServletRequestAttributeListener;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Web application lifecycle listener.
*
* @author user
*/
public class ServletRequestAttributeListenerClass implements ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent event) {
System.out.print(“Attribute ditambahakan : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
//To change body of generated methods, choose Tools | Templates.
}@Override
public void attributeRemoved(ServletRequestAttributeEvent event) {
System.out.print(“Attribute dihapus : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
}@Override
public void attributeRemoved(ServletRequestAttributeEvent event) {
System.out.print(“Attribute dihapus : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
//To change body of generated methods, choose Tools | Templates.
}@Override
public void attributeReplaced(ServletRequestAttributeEvent event) {
System.out.print(“Attribute diganti : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
}@Override
public void attributeReplaced(ServletRequestAttributeEvent event) {
System.out.print(“Attribute diganti : ” + event.getName() + ” = ” + event.getValue());
// throw new UnsupportedOperationException(“Not supported yet.”);
//To change body of generated methods, choose Tools | Templates.
}
}
}
}
Ayo buat lagi file dengan nama HttpSessionListenerClass.java, rubah menjadi :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.ServletContext;
/**
* Web application lifecycle listener.
* @author user
*/
@WebListener()
public class HttpSessionListenerClass implements javax.servlet.http.HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "session " + se.getSession().getId() + " sudah dibuat");
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext ctx = se.getSession().getServletContext();
if (ctx != null) {
ctx.log("Context " + ctx.getServletContextName() + ", "
+ "session " + se.getSession().getId() + " sudah dihancurkan");
}
}
}
yu ah buat lagi file dengan nama HttpSessionAttributeListener.java, rubah lagi isinya menjadi :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.ServletContext;
/**
* Web application lifecycle listener.
* @author user
*/
@WebListener()
public class HttpSessionAttributeListener implements javax.servlet.http.HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
ServletContext ctx=event.getSession().getServletContext();
if(ctx!=null){
ctx.log("Context :"+ctx.getServletContextName()+" ,"+event.getSession().getId()+"session attribute"+event.getName()+"dengan nilai : "+event.getValue()+"sudah ditambahkan");
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
ServletContext ctx=event.getSession().getServletContext();
if(ctx!=null){
ctx.log("Context :"+ctx.getServletContextName()+" ,"+event.getSession().getId()+"session attribute"+event.getName()+"dengan nilai : "+event.getValue()+"sudah dihapus");
}
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
di bawah ini untuk web.xml nya. rubah menjadi ini ya.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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">
<context-param>
<param-name>bhs1</param-name>
<param-value>Java</param-value>
</context-param>
<context-param>
<param-name>bhs2</param-name>
<param-value>C++</param-value>
</context-param>
<context-param>
<param-name>bhs3</param-name>
<param-value>C</param-value>
</context-param>
<context-param>
<param-name>bhs4</param-name>
<param-value>VB.Net</param-value>
</context-param>
<context-param>
<param-name>bhs5</param-name>
<param-value>JSP</param-value>
</context-param>
<listener>
<description>ServletContextListener</description>
<listener-class>ServletContextListenerClass</listener-class>
</listener>
<listener>
<description>ServletContextAttributeListener</description>
<listener-class>ServletContextAttributeListenerClass</listener-class>
</listener>
<listener>
<description>RequestListener</description>
<listener-class>ServletRequestListenerClass</listener-class>
</listener>
<listener>
<description>HttpSessionListener</description>
<listener-class>HttpSessionListenerClass</listener-class>
</listener>
<listener>
<description>RequestAttributeListener</description>
<listener-class>HttpSessionAttributeListenerClass</listener-class>
</listener>
<servlet>
<servlet-name>ServletContext</servlet-name>
<servlet-class>ServletContext</servlet-class>
</servlet>
<servlet>
<servlet-name>ServletContextClass</servlet-name>
<servlet-class>ServletContextClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletContext</servlet-name>
<url-pattern>/ServletContext</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletContextClass</servlet-name>
<url-pattern>/ServletContextClass</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Alhamdulillah tugas kedua selesai. silakan dirun ya.
Berikutnya kita membuat Servlet Context & Listener - DB, siapkan jari ya. :D
oke langsung kita mulai.
1. Buat Project baru ya.
2. Buat file dengan nama DBConnectionManager.java, kemudian rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author user
*/
public class DBConnectionManager {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
private String dbURL;
private String user;
private String password;
private Connection con;
public DBConnectionManager(String url, String u, String p) {
this.dbURL = url;
this.user = u;
this.password = p;
//create db connection now
}
public Connection getConnection() {
return this.con;
}
public void closeConnection() {
}
}
3. Lalu buat lagi file dengan nama MyServlet.java, rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author user
*/
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet MyServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet MyServlet at " + request.getContextPath()
+ "</h1>");
out.println("</body>");
out.println("</html>");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// processRequest(request, response);
ServletContext ctx = request.getServletContext();
ctx.setAttribute("User", "Maulana");
String user = (String) ctx.getAttribute("User");
ctx.removeAttribute("User");
HttpSession session = request.getSession();
session.invalidate();
PrintWriter out = response.getWriter();
out.write("Hi " + user);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
4. Kemudian buat file lagi dengan nama AppContextListener.java, rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
*
* @author user
*/
public class AppContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
String url = ctx.getInitParameter("DBURL");
String u = ctx.getInitParameter("DBUSER");
String p = ctx.getInitParameter("DBPWD");
//create database connection from init parameters and set it to context
DBConnectionManager dbManager = new DBConnectionManager(url, u, p);
ctx.setAttribute("DBManager", dbManager);
System.out.println("Database connection initialized for Application.");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
DBConnectionManager dbManager = (DBConnectionManager) ctx.getAttribute("DBManager");
dbManager.closeConnection();
System.out.println("Database connection closed for Application.");
}
}
5. Dilanjutkan dengan file AppContextAttributeListener.java, rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
/**
*
* @author user
*/
public class AppContextAttributeListener implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
System.out.println("ServletContext attribute added::{" + event.getName()
+ "," + event.getValue() + "}");
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
System.out.println("ServletContext attribute replaced::{" + event.getName()
+ "," + event.getValue() + "}");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
System.out.println("ServletContext attribute removed::{" + event.getName()
+ "," + event.getValue() + "}");
}
}
6. Buat file lagi dengan nama HttpSessionListener.java, rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.http.HttpSessionEvent;
/**
*
* @author user
*/
public class HttpSessionListener implements javax.servlet.http.HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Session Created:: ID=" + se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Session Destroyed:: ID=" + se.getSession().getId());
}
}
7. Sebentar lagi selesai, buat file dengan nama ServletRequestListener.java, rubah menjadi :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
/**
*
* @author user
*/
public class ServletRequestListener implements javax.servlet.ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
ServletRequest servletRequest = sre.getServletRequest();
System.out.println("ServletRequest destroyed. Remote IP="
+ servletRequest.getRemoteAddr());
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
ServletRequest servletRequest = sre.getServletRequest();
System.out.println("ServletRequest initialized. Remote IP="
+ servletRequest.getRemoteAddr());
}
}
8. The last rubah web.xml nya menjadi :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>DBConnectionManager</servlet-name>
<servlet-class>DBConnectionManager</servlet-class>
</servlet>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>AppContextListener</servlet-name>
<servlet-class>AppContextListener</servlet-class>
</servlet>
<servlet>
<servlet-name>AppContextAttributeListener</servlet-name>
<servlet-class>AppContextAttributeListener</servlet-class>
</servlet>
<servlet>
<servlet-name>MySessionListener</servlet-name>
<servlet-class>MySessionListener</servlet-class>
</servlet>
<servlet>
<servlet-name>MyServletRequestListener</servlet-name>
<servlet-class>MyServletRequestListener</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DBConnectionManager</servlet-name>
<url-pattern>/DBConnectionManager</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AppContextListener</servlet-name>
<url-pattern>/AppContextListener</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AppContextAttributeListener</servlet-name>
<url-pattern>/AppContextAttributeListener</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MySessionListener</servlet-name>
<url-pattern>/MySessionListener</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServletRequestListener</servlet-name>
<url-pattern>/MyServletRequestListener</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Alhamdulillah ketiga tugas sudah selesai. silakan dirun ya gan. semoga ilmu ini bermanfaat. aamiin
SALAM SUKSES...!
Wassalamualaikum Wr. Wb.



Comments
Post a Comment