单纯只用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); } }
大体就是这样了,其中我也有很多不明白的地方,但是可以写出来可以运作,实践出来修改很多次就可以弄明白其中的道理了,实践出真知嘛。