servlet初步,简单的登录验证并显示用户名称

编写3个servlet,分别为LogIn、CheckUser、Welcome,在LogIn中输入用户名和密码,点击“提交”按钮,提交到CheckUser中进行验证,验证成功显示Welcome,失败则重新返回到LogIn。

图1,业务流程



图2演示动画


代码如下:

LogIn类:

package com.test.servlet;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
import javax.servlet.ServletException;

public class LogIn extends HttpServlet{

	public void doGet(HttpServletRequest request, HttpServletResponse response){
		try{
			response.setContentType("text/html;charset = GBK");
			request.setCharacterEncoding("GBK");
			PrintWriter pw = response.getWriter();
			pw.write("<html>");
			pw.write("<head>");
			pw.write("<meta http-equiv=\"content-type\" content = \"text/html; charset=GBK\">");
			pw.write("</head>");
			pw.write("<body>");
			pw.write("<h1>欢迎登录</h1>");
			
			pw.write("<form name = \"login\" action = \"checkuser\" method = \"post\">");
			pw.write("用户名<input type = \"text\" name = \"username\" value = \"\"/><br/><br/>");
			pw.write("密  码<input type = \"password\" name = \"password\" value = \"\"/><br/><br/>");
			pw.write("<input type = \"submit\" name = \"submit\" value = \"提交\"/>");
			pw.write("</form>");	
			
			pw.write("</body>");
			pw.write("</html>");

		} catch(IOException io){  
			io.printStackTrace();
		}
		
	
	}
}

CheckUser类:

package com.test.servlet;

import java.io.IOException;
import javax.servlet.http.*;
import javax.servlet.ServletException;

public class CheckUser extends HttpServlet{
	
	public void doPost(HttpServletRequest request, HttpServletResponse response){
		
		String strUserName = null;
		String strPassword = null;

		strUserName = request.getParameter("username");
		strPassword = request.getParameter("password");
		
		// 为测试方便,只要密码为123,即验证通过
		if (/*strUserName.equals("admin") && */strPassword.equals("123")){
			// 验证成功,进入欢迎页面
			try{
				response.sendRedirect("welcome?username=" + strUserName);
			}catch(IOException io){
				io.printStackTrace();				
			}
		}else
		{
			// 验证失败,返回登录页面
			try{		
				response.sendRedirect("login");
			}catch(IOException io){
				io.printStackTrace();
			}
		}
		
	}

}

说明:sendRedirect()传递多个参数,response.sendRedirect("URL路径?参数1=参数1值&参数2=参数2值&参数3=参数3值&...");


Welcome类:

package com.test.servlet;

import java.io.*;
import java.io.IOException;
import javax.servlet.http.*;
import javax.servlet.ServletException;

public class Welcome extends HttpServlet{
	public void doGet(HttpServletRequest request, HttpServletResponse response){
		try{
			response.setContentType("text/html;charset = GBK");
			String strUserName = null;
			
			// 参数传递的用户名,参数中有中文可能会乱码所以需要转码
			strUserName = request.getParameter("username");  
			
			// 使用给定的字符编码将参数字符串编码到 byte 序列,并将结果存储到新的 byte 数组。
            // http协议传输中默认使用的编码是iso-8859-1,所以这里getBytes()方法参数值为iso-8859-1	
			byte [] UserNameBefCode =  strUserName.getBytes("iso-8859-1");
			
			// 通过使用指定的编码,解码指定的 byte 数组,构造一个新的 String。
			// 将参数用GBK重新解码为新的字符串
			strUserName = new String(UserNameBefCode, "GBK");
						
			PrintWriter pw = response.getWriter();
			pw.write("<html>");
			pw.write("<head>");
			pw.write("</head>");
			pw.write("<body>");
			pw.write("<p><b>欢迎:</b>" + strUserName + "</p>");					
			pw.write("</body>");
			pw.write("</html>");

		} catch(IOException io){  
			io.printStackTrace();
		}
	}
}


  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值