重写GenericServlet源代码并实现登录用户名密码的匹配
作者:互联网
重写GenericServlet源代码并实现登录用户名密码的匹配(重写类名为MyGenericServlet)。
GenericServlet:是一个Servlet, 是Servlet接口和ServletConfig接口的实现类,但是是一个抽象类。
其中的service方法为抽象方法,并要格外注意初始化时init()方法,重写时不建议直接覆盖init(ServletConfig) 如果没有super(ServletConfig)而使用了ServletConfig(),会出现空指针异常!!
MyGenericServlet.java
package com.test.one; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public abstract class MyGenericServlet implements Servlet,ServletConfig { @Override public void destroy() { } @Override public ServletConfig getServletConfig() { return servletConfig; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } private ServletConfig servletConfig; @Override public void init(ServletConfig arg0) throws ServletException { this.servletConfig = arg0; init(); } private void init()throws ServletException { } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { } //---------以下方法是ServletConfig接口的方法-------------- @Override public String getInitParameter(String arg0) { return servletConfig.getInitParameter(arg0); } @Override public Enumeration<String> getInitParameterNames() { return servletConfig.getInitParameterNames(); } @Override public ServletContext getServletContext() { return servletConfig.getServletContext(); } @Override public String getServletName() { return servletConfig.getServletName(); } }
LoginServlet.java
package com.test.one; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.GenericServlet; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class LoginServlet extends GenericServlet { @Override public void init() throws ServletException { System.out.println("初始化..."); } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { //1.获取请求参数:username password String username = request.getParameter("username"); String password = request.getParameter("password"); //2.获取当前WEB应用的初始化参数user password //需要使用ServletContext 对象 String initUser = getServletContext().getInitParameter("user"); String initPassword = getServletContext().getInitParameter("password"); PrintWriter out = response.getWriter(); //3.比对 if(initUser.equals(username)&& initPassword.equals(password)) { out.print("Hello" + username); } else { out.print("Sorry" + username); } //4.打印响应字符串 } }
web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app 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_4_0.xsd" version="4.0" metadata-complete="true"> <!-- 配置当前WEB应用的初始化参数 --> <context-param> <param-name>user</param-name> <param-value>zty200329</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>123456</param-value> </context-param> <!-- 配置Servlet --> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>com.test.one.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/loginServlet</url-pattern> </servlet-mapping> </web-app>
login.html文件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="loginServlet" method="post"> user:<input type="text" name="username"/> password:<input type="password" name="password"/> <input type="submit" value="Submit"/> </form> </body> </html>
标签:用户名,ServletConfig,GenericServlet,javax,Override,import,源代码,servlet,public 来源: https://www.cnblogs.com/zty200329/p/10813411.html