【JSP中servlet】单纯利用servlet写一个用户名密码判断页面

时间:2021-07-19 19:06:21

单纯只用servlet完成无数据库的用户名密码验证,和在JSP中差距并不大,和JSP界面一样,需要创建一个主界面和一个验证界面以及一个成功跳转界面,主要利用servlet中的doPost()函数来完成,当然doGet()也可以,而且douget是默认调用函数,但dopost能够传输的更多,所以平时主要还是用post,servlet是httpservlet的继承界面,而httpservlet则是GenericServlet的一个继承界面,所以可以自己新建Class文件,继承httpservlet或者直接继承Genericservlet,写上必须的doget(),dopost(),init(),service(),destoryu()等函数就可以了,但因为构建Class文件需要在xml文件中设置一些量,所以我是直接新建的servlet文件。

具体就是一个新建的servlet文件,首先将其doget()函数下的所有直接转移到dopost()下,就是doget()函数中的所有删掉,添加上this.dopost(request,response),再然后,将其中的dopost函数下的out.print()中加上Html代码具体如下  

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.print("<form action=\"viladatesurvlet\" method=\"post\"");
  if(request.getAttribute("error")!=null){
   out.print("<p><font color=\"red\">"+request.getAttribute("error")+"</font></p>");
  }
  out.print("<p>用户名:<input type=\"text\" name=\"username\"></p>");
  out.print("<p>密码:<input type=\"password\" name=\"pwd\"></p>");
  out.print("<p><input type=\"submit\" value=\"提交\"></p>");
  out.print("</form>");
  out.println("");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();

这和在jsp界面中敲击差不多,注意的是要添加字符编码,要不然汉子输出的全都是乱码具体就是在dopost()下的setContextType(“txt/html;charset:utf-8”);这样界面就能识别汉子啦,这样这一个登陆界面我们就做完了。

然后就是判断界面,前面转移都相同,到了doPost()函数下,全部删掉,利用JAVA代码,可以直接用request.getParameter()获取用户输入的值,然后就是一个IF函数来判断一下,如果想要在其中加入数据库,并且查询数据库中的值也可以加,可以看我上一篇文章,连接数据库等等,很简单易学,这里我们不加,单纯的判断一下,然后就是传值跳转了,有两种方法,分别是response.sendRedirect(request.getcontexttype()+"")和request.getRequestDispatcher("").forWord(requser,response)在双引号中加入要转移的界面就好了,传值的话如果是用request.***的可以用request.setAttribute(*,*),因为不转换界面,传的值不容易出错,而用response.sen.....的这种就需要全局都能调用的那种,比如session.attribute(),无论在哪个页面传入都可以调用到得,下面是代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html;charset=utf-8");
  String un=request.getParameter("username");
  String pw=request.getParameter("pwd");
  if("123".equals(un)&&"123".equals(pw)){
   response.sendRedirect(request.getContextPath()+"/successsurvlet");
  }else {
   request.setAttribute("error", "用户名或密码错误");
   
   request.getRequestDispatcher("/loginservlet").forward(request, response);
  }
 }

大体就是这样了,其中我也有很多不明白的地方,但是可以写出来可以运作,实践出来修改很多次就可以弄明白其中的道理了,实践出真知嘛。