Servlet生命周期中的service方法探究

本文介绍了一个具体的登录Servlet实现案例,详细展示了如何通过HTTP请求处理用户登录验证,并与数据库进行交互检查用户名及密码的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、该servlet代码如下

package com.yqq.loginservice;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yqq.loginservice.DButis.TestDbUtils;

public class LoginServlet extends HttpServlet {
	private TestDbUtils mTestDbUtils;
	private String u;
	private String p;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("doGet");
		
	}

	/**
	 * 查询数据库检查是否有该参数存在
	 * @param userName用户名
	 * @param password密码
	 * @return
	 */
	private boolean checkLogin(String userName,String password){
		List<Map<String,String>> results=new ArrayList<Map<String,String>>();
		
		if(u.equals(userName)&&p.equals(password)){
			return true;
		}
		//获得数据库操作实例
		mTestDbUtils=TestDbUtils.getSington();
		results=mTestDbUtils.getCheckUserInfo();
		System.out.println(results.toString());
		for(Map<String,String> map:results){
			
			if(map.get("userName").equals(userName)&&map.get("passWord").equals(password)){
				return true;
			}
		}
		
		
		return false;
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("doPost");
		doGet(req,resp);
	}

	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		super.service(req, resp);
		System.out.println("service");
		//设置编码
				req.setCharacterEncoding("UTF-8");
				resp.setContentType("text/html;charset=utf-8");
				resp.setCharacterEncoding("utf-8");
				PrintWriter out=resp.getWriter();
				//获得客户端提交的参数
				String uesrName=req.getParameter("userName");
				String password=req.getParameter("passWord");
				System.out.print("提交的参数:"+uesrName+password);
				if(checkLogin(uesrName, password)){
					out.write("welldone");
					System.out.print("返回的数据:"+"welldone"+"登录成功");
				}else{
					out.write("登录失败该用户不存在!请先注册!");
					System.out.print("返回的数据:"+"登录失败该用户不存在!请先注册!");
				}
				out.flush();
				
	}

	
	@Override
	public void destroy() {
		
		super.destroy();
	}

	
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		super.init(config);
		System.out.println("init");
		u=config.getInitParameter("name");
		p=config.getInitParameter("password");
		
	}
	

}

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
   <servlet>
    
    
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.yqq.loginservice.LoginServlet</servlet-class>
    
    
     <init-param> 
        <param-name>name</param-name> 
        <param-value>test</param-value> 
    </init-param>  
      <init-param> 
        <param-name>password</param-name> 
        <param-value>888888</param-value> 
    </init-param>  
    
    
  </servlet>



  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>	
</web-app>


部署成功后第一次访问结果如下:


然后的访问就是如下所示了:


所以service方法每次都执行。但不写do方法,程序运行不了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值