重写GenericServlet源代码并实现登录用户名密码的匹配(重写类名为MyGenericServlet)。
GenericServlet:是一个Servlet, 是Servlet接口和ServletConfig接口的实现类,但是是一个抽象类。
其中的service方法为抽象方法,并要格外注意初始化时init()方法,重写时不建议直接覆盖init(ServletConfig) 如果没有super(ServletConfig)而使用了ServletConfig(),会出现空指针异常!!
MyGenericServlet.java
package com.wang.servlet;
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.wang.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class LoginServlet extends MyGenericServlet {
// 对当前的Servlet进行覆盖init()方法
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Servlet#service(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse)
*/
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
String requestName = request.getParameter("user");
String requestPsw = request.getParameter("password");
String psw = getInitParameter(requestName);
response.setCharacterEncoding("UTF-8");// 中文的乱码问题
response.setContentType("text/plain");// 指定为纯文本格式
PrintWriter out = response.getWriter();
if (psw == null) {
out.println("登录失败");
} else if (requestPsw.equals(psw)) {
out.println("登录成功");
} else {
out.println("登录失败");
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Les_11_GenericSevlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<context-param>
<param-name>user1</param-name>
<param-value>121911</param-value>
</context-param>
<context-param>
<param-name>wangzijian</param-name>
<param-value>1219116968</param-value>
</context-param>
<!-- servlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.wang.servlet.LoginServlet</servlet-class>
<init-param>
<param-name>wangzijian</param-name>
<param-value>1219116968</param-value>
</init-param>
</servlet>
<!--Hello2.java Servlet 映射 -->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>index.html</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=utf-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="login" method="post">
name: <input type="text" name="user"> <br> password : <input
type="text" name="password"> <input type="submit" value="登录">
</form>
</body>
</html>