总结servlet、MySQL、MD5加密实现登录、注册、跳转页面

1、不要buildpath将jdbc整个项目引入
2、必须引数据库连接包mysql-connector-java,而且要置于WEB-INF的lib下
3、点击登录或注册所提交的表单分别用两个不同的servlet接收,都调用重写的post方法,输入的信息就不会在网址上呈现
4、用if语句去有选择的处理①用户名、②第一次密码、③第二次密码,如后代码
5、必须注意key与value,key只在判断①②③时出现,其余均为value
6、要在遍历表单数据外设置一变量用来保存用户名(登录时,用户名正确的前提下判断密码;注册时,用户名正确的前提下判断第一次密码)、第一次密码(注册时,第一次密码正确,判断第二次密码)
7、MD5加密就是把一个密码串变成唯一对应的32位的UUID存于数据库的表中,在数据库中只能见到加密的编码,此后如果要验证密码,只比对加密后的编码是否一致

package com.jd.servlet;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

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

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.jd.util.DBUtil;
import com.jd.util.MD5Util;

public class RegistServlet extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(ServletFileUpload.isMultipartContent(request)){//1、判断当前form表单的编码方式是不是为enctype="multipart/form-data"
			FileItemFactory fileItemFactory = new DiskFileItemFactory();
			ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
			servletFileUpload.setFileSizeMax(1024*1024*6*10);
			List<FileItem> fileItemList = null;
			try {
				fileItemList = servletFileUpload.parseRequest(request);//2、将form表单中每个携带数据的标签转换成每个FileItem对象并存到集合中
			} catch (FileUploadException e) {
				e.printStackTrace();
				request.setAttribute("message", "文件太大,上传失败");
				request.getRequestDispatcher("result.jsp").forward(request, response);
				return;
			}
			String u=null,p_1=null;
			for(FileItem fileItem : fileItemList){//3、获取form表单所携带的数据
				if(fileItem.isFormField()){//为true表示为非文件类型的标签
					String key = fileItem.getFieldName();//summary
					String value = fileItem.getString();//summary对相的数据
					if(key.equals("u")) {
						if(value.equals("")) {
							request.setAttribute("message", "注册失败,用户名不能为空!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						if(DBUtil.exist("select * from user_info where uN = ?",value)) {
							request.setAttribute("message", "注册失败,用户名已存在");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						u=value;
						continue;
					}
					if(key.equals("p1")) {
						if(value.equals("")) {
							request.setAttribute("message", "注册失败,密码不能为空!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						p_1=value;
						continue;
					}
					if(key.equals("p2")) {
						if(value.equals("")) {
							request.setAttribute("message", "注册失败,密码不能为空!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						if(value.equals(p_1)==false) {
							request.setAttribute("message", "注册失败,两次密码不一致!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
					}
					DBUtil.register("insert into user_info (uN,password) values(?,?)",u,MD5Util.getInstance().getMD5(value));
					request.setAttribute("message", "注册成功,已保存到数据库");
					request.getRequestDispatcher("result.jsp").forward(request, response);
				}else{//文件类型
					try {
						String oldFileName = fileItem.getName();
						String fileNameSuffix=oldFileName.substring(oldFileName.lastIndexOf("."));
						System.out.println(fileNameSuffix);
						String fileNamePrefix = UUID.randomUUID().toString();
//						fileItem.write(new File("D:\\"+fileNamePrefix+fileNameSuffix));//未发布路径
						
						String path = "D://"+fileNamePrefix+fileNameSuffix;
						fileItem.write(new File(path+fileNamePrefix+fileNameSuffix));//发布路径
						System.out.println(path);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
		}else{
			request.setAttribute("message", "当前form表单enctype属性的属性值非multipart/form-data");
			request.getRequestDispatcher("result.jsp").forward(request, response);
		}
	}

}

package com.jd.servlet;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

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

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.jd.util.DBUtil;
import com.jd.util.MD5Util;
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(ServletFileUpload.isMultipartContent(request)){//1、判断当前form表单的编码方式是不是为enctype="multipart/form-data"
			FileItemFactory fileItemFactory = new DiskFileItemFactory();
			ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
			servletFileUpload.setFileSizeMax(1024*1024*6*10);
			List<FileItem> fileItemList = null;
			try {
				fileItemList = servletFileUpload.parseRequest(request);//2、将form表单中每个携带数据的标签转换成每个FileItem对象并存到集合中
			} catch (FileUploadException e) {
				e.printStackTrace();
				request.setAttribute("message", "文件太大,上传失败");
				request.getRequestDispatcher("result.jsp").forward(request, response);
				return;
			}
			String u=null;
			for(FileItem fileItem : fileItemList){//3、获取form表单所携带的数据
				if(fileItem.isFormField()){//为true表示为非文件类型的标签
					String key = fileItem.getFieldName();//summary
					String value = fileItem.getString();//summary对相的数据
					if(key.equals("u")) {
						if(value.equals("")) {
							request.setAttribute("message", "登录失败,用户名不能为空!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						if(!DBUtil.exist("select * from user_info where uN = ?",value)) {
							request.setAttribute("message", "登录失败,用户名不存在");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						u=value;
						continue;
					}
					if(key.equals("p")) {
						if(value.equals("")) {
							request.setAttribute("message", "登录失败,密码不能为空!");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						String sql = "select * from user_info where uN = ? and password = ?";
						if(!DBUtil.exist(sql, u, MD5Util.getInstance().getMD5(value))) {
							request.setAttribute("message", "登录失败,密码错误");
							request.getRequestDispatcher("result.jsp").forward(request, response);
							return;
						}
						request.setAttribute("message", "登录成功");
						request.getRequestDispatcher("result.jsp").forward(request, response);
					}
				}else{//文件类型
					try {
						String oldFileName = fileItem.getName();
						String fileNameSuffix=oldFileName.substring(oldFileName.lastIndexOf("."));
						System.out.println(fileNameSuffix);
						String fileNamePrefix = UUID.randomUUID().toString();
//						fileItem.write(new File("D:\\"+fileNamePrefix+fileNameSuffix));//未发布路径
						
						String path = "D://"+fileNamePrefix+fileNameSuffix;
						fileItem.write(new File(path+fileNamePrefix+fileNameSuffix));//发布路径
						System.out.println(path);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
			request.setAttribute("message", "登录成功");
			request.getRequestDispatcher("result.jsp").forward(request, response);
		}else{
			request.setAttribute("message", "当前form表单enctype属性的属性值非multipart/form-data");
			request.getRequestDispatcher("result.jsp").forward(request, response);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值