获取servlet配置文件内容

来源:互联网 发布:成龙 张蓝心 知乎 编辑:程序博客网 时间:2024/06/01 21:11
package com.lean.zzh;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ZzhServlet extends HttpServlet {/** * Constructor of the object. */public ZzhServlet() {super();}private ServletConfig config;// 这里重写了父类的init(ServletConfig config)方法 如果没有super.init(config)// 那么 父类的这个方法将失效 父类的这个方法里面还有调用了一下 init() 空参的init()// 所以如果自己还初始化了一些其他的东西那么就会失效 所以 就 自己重新调用一下这空参的init()/* * @Override public void init(ServletConfig config) throws ServletException * { // TODO Auto-generated method stub this.config = config; init(); } *//** * Destruction of the servlet. <br> */public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/** * The doGet method of the servlet. <br> *  * This method is called when a form has its tag value method equals to get. *  * @param request *            the request send by the client to the server * @param response *            the response send by the server to the client * @throws ServletException *             if an error occurred * @throws IOException *             if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");// 第一种:// String username = config.getInitParameter("username");// String password = config.getInitParameter("password");// String encoding = config.getInitParameter("encoding");// 第二种方法获得配置时 会显示500意思就是 空指针异常 为什么呢?// 首先参数是配置好的 不会为空 那么就是getServletConfig()获取config没获取到为空导致的为什么呢// 因为在上面重写了init(ServletConfig config)方法 会覆盖父类的init(ServletConfig// config)方法// 导致父类的confing不会再init(ServletConfig config)中初始化 导致父类的config参数为空// 那么获取时也就为空// 解决方案不重写这个方法// String username = getServletConfig().getInitParameter("username");// String password = getServletConfig().getInitParameter("password");// String encoding = getServletConfig().getInitParameter("encoding");// 第三种方式:为什么可以这样用呢 因为底层是这样用的// 利用适配器设计模式,servlet和servletconfig二者合一,于是servlet就是servletconfig,不用获取// @Override// public String getInitParameter(String name) {// return getServletConfig().getInitParameter(name);// }String username = getInitParameter("username");String password = getInitParameter("password");String encoding = getInitParameter("encoding");out.print(username + ":" + password + ":" + encoding);System.out.println(username + ":" + password + ":" + encoding);out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}/** * The doPost method of the servlet. <br> *  * This method is called when a form has its tag value method equals to * post. *  * @param request *            the request send by the client to the server * @param response *            the response send by the server to the client * @throws ServletException *             if an error occurred * @throws IOException *             if an error occurred */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");out.print("    This is ");out.print(this.getClass());out.println(", using the POST method");out.println("  </BODY>");out.println("</HTML>");out.flush();out.close();}/** * Initialization of the servlet. <br> *  * @throws ServletException *             if an error occurs */public void init() throws ServletException {// Put your code here}}

原创粉丝点击