导读:用Servlet可以实现用户的登录和注册。这里只是把数据放在ServletContext和Session中,并没有存在数据库。
准备:
首先要创建一个User的类,用来封装用户的各种属性,并为其设置getter/setter方法。
public class User {
private String username;
private String password;
private String nickname;
private String sex;
private String hobby;
private String path;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
//其它属性的getter/setter
}
然后由于需要把用户数据存放到全局ServletContext当中,所以需要创建一个InitServlet,用来初始化全局对象。需要制定loadOnstartup属性。
@WebServlet("/InitServlet",loadOnStartup=2)
public class InitServlet extends HttpServlet {
@Override
public void init() throws ServletException {
//创建一个List集合用于保存用户的注册信息
List<User> list=new ArrayList<User>();
//将list保存到ServletContext中
//在这里,也就是只要Tomcat一启动,所有注册的用户信息都会存储在这个List中,
//如果Tomcat关闭,则数据清空。实际情况应该在数据库中保存。
this.getServletContext().setAttribute("list",list);
}
}
如果用户上传的图片名字一样,会覆盖掉。所以还需要对用户上传的图片名字进行处理,让其唯一化。
public class UploadUtils {
public static String getUUIDFileName(String fileName){
//获取扩展名
int idx=fileName.lastIndexOf(".");
String extension=fileName.substring(idx);
return UUID.randomUUID().toString().replace("-","")+extension;
}
}
最后,还需要编写一个处理Cookie的类,用于Cookie处理。
public class CookieUtils {
public static Cookie findCookie(Cookie[] cookies,String name){
if(cookies==null){
//没有携带cookie
return null;
}else{
for(Cookie cookie:cookies){
if(name.equals(cookie.getName())){
return cookie;
}
}
//没带包含username的cookie
return null;
}
}
}
注册:
regist.jsp用于注册,由于form表单需要上传文件,所以enctype需要="multipart/form-data"。表单的数据提交到RegistServlet中。
<form action="/reg_login/RegistServlet" method="post" enctype="multipart/form-data">
<table>
<tr>
<td class="td1">用户名</td>
<td><input type="text" class="input1" name="username"></td>
</tr>
<!--其它用户属性-->
</table>
</form>
在RegistServlet中,首先要尝试从regist.jsp中发来的请求,是由含有文件对象。如果有,就解析这个对象。
@WebServlet("/RegistServlet")
public cl