回顾:https://blog.csdn.net/qq_43711904/article/details/99226689
练习:
梳理的servlet、GenericServlet、HttpServlet的关系与ServletConfig对象的获取方式:
|
public class GetInfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig1) {
try {
super.init(servletConfig1);
this.servletConfig = servletConfig1;
} catch (ServletException e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
/*
* 得到ServletConfig对象的第一种方式
*
* 配置信息被解析后会将数据加载到ServletConfig中保存到内存
* ServletConfig中定义的方法:
* getServletName();getServletContext();getInitParameter(java.lang.String name);getInitParameterNames()
*
* 因为默认Servlet对象初始化时调用的是init()无参构造,如果需要在方法体中保存ServletConfig信息:
* 就需要实现Servle接口中的方法public void init(ServletConfig servletconfig)
* 此时则可以直接通过“servletConfig.方法”在Servlet中调用
*/
System.out.println("Servlet名称:" + servletConfig.getServletName());
System.out.println("key1:" + servletConfig.getInitParameter("key1"));
System.out.println("key2:" + servletConfig.getInitParameter("key2"));
/*
* 得到ServletConfig对象的第二种方式
*
* Servlet接口中的非周期方法:
* 获取Servlet的信息getServletInfo();获取Servlet的配置信息getServletConfig()
*
* servlet与GenericServlet,HttpServlet的关系:
* GenericServlet,HttpServlet都是servlet的实现类,HttpServlet类又继承了GenericServlet类;
* Servle接口中定义了三个周期方法:init() service() destroy();
* HttpServlet类中定义的方法:doGet() doPost()
*
* 所以当前类作为HttpServlet类的子类可以通过调用Servlet接口中getServletConfig()方法获取更多配置信息
*/
// String servletName = this.getServletConfig().getServletName();
// String value1 = this.getServletConfig().getInitParameter("key1");
// String value2 = this.getServletConfig().getInitParameter("key2");
/*
* 得到ServletConfig对象的第三种方式
*
* GenericServlet重写了ServletConfig接口中的getInitParameter()等方法
* 而HttpServlet又继承了GenericServlet
* 所以可以在当前类作为HttpServlet子类可以直接调用getInitParameter()等方法
*/
String servletName = this.getServletName();
String value1 = this.getInitParameter("key1");
String value2 = this.getInitParameter("key2");
out.println("<html><body>");
out.println("Servlet名称:"+servletName+"<br>");
out.println("key1:"+value1+"<br>");
out.println("key2:"+value2);
out.println("</body></html>
|
掌握HttpServletRequest中的方法:
|
@WebServlet("/ShowHeadersServlet")
public class HeaderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@SuppressWarnings("deprecation")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html><head></head><body><table width=\"100%\" border=\"1\">");
/*
* HttpServletRequest
* getContextPath() /web_practise
* getServletPath() /ShowHeadersServlet
* getRequestURI() /web_practise/ShowHeadersServlet
* getRequestURL() http://localhost:8080/web_practise/ShowHeadersServlet
* getRealPath("/")
* getHeader(java.lang.String name) getHeaders(java.lang.String name)
* getHeaderNames()
* getQueryString()
* getMethod()
*/
out.println("<tr><td>HeaderServlet at</td> " +"<td>"+ request.getContextPath() + "</td></tr>");
Enumeration<String> names = request.getHeaderNames();
while(names.hasMoreElements()) {
String name = names.nextElement();
out.println("<tr><td>" + name + "</td> " +"<td>"+ request.getHeader(name) + "</td></tr>");
}
out.println("<tr><td>request.getRequestURL()</td> " +"<td>"+ request.getRequestURL() + "</td></tr>");
out.println("<tr><td>request.getRequestURI()</td> " +"<td>"+ request.getRequestURI() + "</td></tr>");
out.println("<tr><td>request.getContextPath()</td> " +"<td>"+ request.getContextPath() + "</td></tr>");
out.println("<tr><td>request.getServletPath()</td> " +"<td>"+ request.getServletPath() + "</td></tr>");
out.println("<tr><td>request.getRealPath()</td> " +"<td>"+ request.getRealPath("/") + "</td></tr>");
out.println("</table></body></html>
运行结果:

|
相关文章: