实验1Servlet编程
实现一个用户注册/登录模块,大致功能如下:
1启动首页为登录页
2如果用户还没有用户名和密码,则请他/她先进行注册,注册信息写入一个文本文件中,注册成功后直接回到登录页
3登录成功后则提示XXX登录成功
4登录不成功则提示究竟是用户名不存在还是密码错误
5其它你想到的情况,请多参看别的软件的登录页
6加入HttpSession,登录成功后才允许下列操作:
A上传自己的照片
B下载你的软件说明文档
总结:
1.html页面新建在WebContent目录下,不要在总项目目录下。
2.改注解时,前面的name属性也要做相应修改,否则出现404错误。
3.写入txt文件时,如果输出流没有关闭,写入会失败,所以记得一定要调用close();
其中,str+"\r\n"表示按行写入
4.html中在最外层比在里层设置编码格式能较好解决乱码
5.servlet中输出并嵌入html/servlet页面(使用RequestDispatcher)。
out.println("<body>");
out.println("<h1> 密码错误,请重新登录!</h1>");
RequestDispatcher dispatcher=request.getRequestDispatcher("dl.html");
dispatcher.include(request,response);
out.println("</body>");
out.println("</html>");
6.按行写入文件,fw和bw不关闭会出现写入不成功情况,所以一定要调用close();
String str = new_userID+","+new_password;
FileWriter fw = new FileWriter("D:\\java2ee ecplise\\workspace\\java_ee_project1\\name_pwd.txt",true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(str+"\n");
bw.close();
fw.close();
7.html文件中,action=“servletName”而不是action=“/servletName”
8.登陆成功后向session中写入一个值
//向session中的变量token赋值。
HttpSession session = request.getSession();
session.setAttribute("token", name);
session.setMaxInactiveInterval(60);
PrintWriter out = response.getWriter();
if(session==null){
//重定向到登陆页面
response.sendRedirect(request.getContextPath()+"/dl.html");
return;
}//这里要先判断session是否存在先,直接用第二个if条件判断token值,当session不存在时会出错
if(session.getAttribute("token")==null) {
response.sendRedirect(request.getContextPath()+"/dl.html");
return;
}
9.从session中取出该值,判断当前session是否为登陆状态,否则重定向到登陆页面
//httpSession检测是否登陆
HttpSession session = request.getSession(false);
if(session==null){
//重定向到登陆页面
response.sendRedirect(request.getContextPath()+"/dl.html");
return;
}//这里要先判断session是否存在先,直接用第二个if条件判断token值,当session不存在时会出错
if(session.getAttribute("token")==null) {
response.sendRedirect(request.getContextPath()+"/dl.html");
return;
}