web.xml中配置当前web应用的初始化参数:
<!-- 配置当前web应用的初始化参数 -->
<context-param>
<param-name>user</param-name>
<param-value>atguigu</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123567</param-value>
</context-param>
创建login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="loginServlet" method="post">
user:<input type="text" name="username"/>
password:<input type="password" name="userpassword"/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
创建loginservlet:
重写service方法:
package javaweb;
import java.io.IOException;
import java.io.PrintWriter;
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 implements Servlet {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
private ServletConfig servletConfig;//为了使service中的方法使用ServletContext
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig=servletConfig;//传进来参数
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
//1.获取请求参数,form表单提交过来的username password
String username=request.getParameter("username");
String password=request.getParameter("userpassword");
//2获取当前web应用的初始化参数user password
// 需要使用servletContext对象,ServletConfig对象可以产生,见init方法参数
ServletContext servletContext = servletConfig.getServletContext();
String initUser=servletContext.getInitParameter("user");//atguigu
String initPassword=servletContext.getInitParameter("password");//123567
//3比对
PrintWriter out=response.getWriter();
if(initPassword.equals(password)&&initUser.equals(username)) {
//4打印响应字符串
out.print("hello:"+username);
}else {
out.print("sorry"+username);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
配置servlet:
<!-- 配置servlet -->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>javaweb.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern><!-- 需要与form表单中的action一致 -->
</servlet-mapping>
上述文件目录如下:
·················································································优化代码··············································································
创建MyGenericServlet类:
package javaweb;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*
* 自定义的servlet接口的实现类,让开发的任何servlet都继承该类以简化开发
*/
public abstract class MyGenericServlet implements Servlet {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@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;
}
@Override
public abstract void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException;
}
LoginServlet继承MyGenericServlet,简化代码:
package javaweb;
import java.io.IOException;
import java.io.PrintWriter;
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 MyGenericServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
//1.获取请求参数,form表单提交过来的username password
String username=request.getParameter("username");
String password=request.getParameter("userpassword");
//2获取当前web应用的初始化参数user password
// 需要使用servletContext对象,ServletConfig对象可以产生,见init方法参数
ServletContext servletContext = getServletConfig().getServletContext();//MyGenericServlet
String initUser=servletContext.getInitParameter("user");//atguigu
String initPassword=servletContext.getInitParameter("password");//123567
//3比对
PrintWriter out=response.getWriter();
if(initPassword.equals(password)&&initUser.equals(username)) {
//4打印响应字符串
out.print("hello:"+username);
}else {
out.print("sorry"+username);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
··········································································再次·····优化代码··············································································
package javaweb;
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;
/*
* 自定义的servlet接口的实现类,让开发的任何servlet都继承该类以简化开发
*/
public abstract class MyGenericServlet implements Servlet,ServletConfig {
/**以下为servlet方法**/
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@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;
}
@Override
public abstract void service(ServletRequest arg0, ServletResponse arg1) 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();
}
}
package javaweb;
import java.io.IOException;
import java.io.PrintWriter;
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 MyGenericServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
//1.获取请求参数,form表单提交过来的username password
String username=request.getParameter("username");
String password=request.getParameter("userpassword");
//2获取当前web应用的初始化参数user password
// 需要使用servletContext对象,ServletConfig对象可以产生,见init方法参数
String initUser=getServletContext().getInitParameter("user");//atguigu
String initPassword=getServletContext().getInitParameter("password");//123567
//3比对
PrintWriter out=response.getWriter();
if(initPassword.equals(password)&&initUser.equals(username)) {
//4打印响应字符串
out.print("hello:"+username);
}else {
out.print("sorry"+username);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}