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);
}
}
}