重写GenericServlet源代码并实现登录用户名密码的匹配

版权声明:本博主所有播客均为原创作品,如有商业用途,抄袭等,必追究其法律程序。 https://blog.csdn.net/wangzijian121/article/details/83572719

重写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>

猜你喜欢

转载自blog.csdn.net/wangzijian121/article/details/83572719