WebBox Klassenbibliothek
ulrich
2021-01-28 96dfd62fbfe771616045a253bbeb1415538e815f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * 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.
 */
package de.uhilger.wbx.web;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 *
 */
public class TestServlet extends HttpServlet {
  
  private static final Logger logger = Logger.getLogger(TestServlet.class.getName());
  
  public static final String JNDI_CTX_NAME = "java:comp/env";
  public static final String PARAM_NAME = "wbxFileBase";
  public static final String NOT_FOUND = " nicht gefunden";
  public static final String NO_STRING = " ist kein String";
 
  /**
   * 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");
    try (PrintWriter out = response.getWriter()) {
      out.println("<!DOCTYPE html>");
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Servlet TestServlet</title>");   
      out.println("</head>");
      out.println("<body>");
      out.println("<h1>Servlet TestServlet at " + request.getContextPath() + "</h1>");
      
      // hier kommt veraenderlicher Inhalt
      ServletContext ctx = request.getSession().getServletContext();
      Object o = ctx.getAttribute("filebase");
      String base;
      if(o instanceof String) {
        base = o.toString();
      } else {
        base = "unbekannt";
      }
      out.print("<p>filebase: ");
      out.print(base);
      out.print("</p>\n");
      
      out.print("<p>");
      out.print(PARAM_NAME);
      out.print(": ");
      out.print(getJNDIParameter(PARAM_NAME));
      out.print("</p>\n");
      
      out.print("<p>");
      out.print("Request URL: ");
      out.print(request.getRequestURL());
      out.print("</p>\n");
      // Ende des veraenderlichen Inhalts
      
      out.println("</body>");
      out.println("</html>");
    }
  }
  
 private String getJNDIParameter(String pname) {
    try {
      // unseren environment naming context ermitteln
      Context initCtx = new InitialContext();
      Context envCtx = (Context) initCtx.lookup(JNDI_CTX_NAME);
      
      // unseren Parameter lesen
      Object o = envCtx.lookup(pname);
      if(o instanceof String) {
        return o.toString();      
      } else {
        return NO_STRING;
      }
    } catch (NamingException ex) {
      logger.log(Level.SEVERE, ex.getMessage());
      return NOT_FOUND;
    }
  }  
  
 
  // <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);
  }
 
  /**
   * Returns a short description of the servlet.
   *
   * @return a String containing servlet description
   */
  @Override
  public String getServletInfo() {
    return "Short description";
  }// </editor-fold>
 
}