Servlet 登录DEMO

本文分享了一次使用Servlet实现登录窗口的个人经历,从最初的困惑到最终解决问题的过程,包括代码实现、关键步骤解析以及遇到的问题解决方法。通过实战案例,旨在帮助Java初学者更好地理解和掌握Servlet的相关知识。


        引言:突然回忆起一年前的面试,要我用servlet写一个登录窗口,成功就跳转,失败就重新登录。开始觉得很简单,这不小意思嘛!谁知道上机一试,彻底掉链子了,最后理所当然的被狠狠的鄙视了一番。至今想起,心寒不已。于是趁着那份决心,自己动手写了一个demo,虽然基础,但还是收获很多.
       代码大致结构图如下:

          

     从结构可以看出,非常简单,我就不一一说明了。

     先来看看index.jsp的内容:

<script type="text/javascript">
<%if(request.getAttribute("msg")!=null){%>
alert("用户名和密码错误!!!");
 <%}%>
</script>
</head>
<body>
<form id="formId" action="TestServlet1" method="post">
<table>
<tr><td>用户名</td><td><input type="text" id="name" name="name"></td></tr>
<tr><td>密码</td><td><input type="password" id="password"></td></tr>
<tr><td><input type="submit" value="登录" /></td></tr>
</table>
</form>
</body>

    也就是两个输入框和一个提交按钮。method="post"表面使用post方式提交,这样就默认调用servlet里面的doPost方法了。

再来看看比较重要的的一部,web.xml:

<servlet>
    <servlet-name>TestServlet2</servlet-name>
    <servlet-class>com.servlet.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet2</servlet-name>
    <url-pattern>/TestServlet1</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

    看到这个地方大家要注意下,jsp中的TestServlet1是和web.xml里面的TestServlet1对应的,请求对应到TestServlet1,然后再找到TestServlet2,从而找到对应的servlet.

    接下来看看servlet代码TestServlet.java:

public class TestServlet extends HttpServlet {
 public TestServlet() {
  super();
 }
 public void destroy() {
  super.destroy(); 
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
      request.setCharacterEncoding("UTF-8");
      String name=(String) request.getParameter("name");
      System.out.println("name==>"+name);
      request.setAttribute("name", name);
      if("zwm".equals(name)){
       request.getRequestDispatcher("success.jsp").forward(request, response);//转发,是同一个请求,转发到的jsp可以得到request里面的属性值
      }else{
       request.setAttribute("msg", "用户名和密码错误!!!");
       request.getRequestDispatcher("index.jsp").forward(request, response);//转发,是同一个请求,转发到的jsp可以得到request里面的属性值
      //response.sendRedirect("index.jsp");//重定向,属于不同的请求,下个jsp无法得到request里面的值
      }
 }
 public void init() throws ServletException {
  // Put your code here
 }
}

      里面代码比较简单,只是对用户名进行了验证,如果用户名对了就跳转到成功页面,并将输入的用户名显示出来,如果不对则提示重新登录。由于下一个页面都需要获得request里面的属性值,所以只能用转发,不能使用重定向。

成功页面也就一行关键的代码:

<td>欢迎<%=request.getAttribute("name")%>登录</td>
     在此期间遇到这样的一个问题,开始在servlet中居然无法通过request.getParameter("name")获得name的值,郁闷了很久,后来才知道 ,我在form上加了 enctype="multipart/form-data" 这个属性,这样问题就来了,大家都知道,这个属性是在文件上传的时候使用的,使用multipart/form-data上传时,发送的请求和一般的http不一样,需要转化后才能读其他参数,所以这个地方使用request就没法获得属性值了。

    看完觉得确实很简单,就是自己当初在学习的时候没有自己动手写一遍,也不至于被人给鄙视了,大家(java初学者)不妨自己试试,肯定有所收获的。

   demo下载地址http://download.youkuaiyun.com/detail/javaweiming/7023885





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值