一、实现用户登录时若没有输入用户名,给出用户名不能为空的提示,若没有输入密码,给出密码不能为空的提示。
1、首先在index.jsp里面建立一个form表单,action为当我提交表单时用来处理程序的url地址,我想要在Loginservlet里面处理,它的url是/login,所以写上action= “/login”,method是用来指定数据传送到服务器的方式,选用的方法是post(对于输入密码更安全)。如图所示
2、当我点击登录按钮时,控制权跳转到Loginservlet,首先我要在Loginservlet里面得到用户输入的内容(要在dopost方法里面写,因为我的method是post),用String string = request.getParameter("username")来得到,request是JSP的一个内置对象,用来处理HTTP请求中的各项参数,在这里,我们通过request对象的getParameter()方法获取传递的参数值。这里的username就是input里面的name,因为name是用来指定输入字段的名称。通过同样的方式,我们就可以在Loginservlet将用户输入的用户名和密码得到了。具体代码如下:
3、在Servlet中判断用户名和密码是否为空,然后将结果返回给页面。
如果用户名为空,我们给前端返回一个字符串为 “null1”,如果密码为空,我们给前端返回一个不一样的字符串 “null2”。在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。我们需要使用到request对象中的setAttribute()方法,将数据保存到request范围的变量中。request的语法格式如下:request.setAttribute(String name,Object object),其中name表示变量名,在转发后的页面取数据时,就是通过name这个变量名来获取的。注意要加引号。Object则可以是任意类型。
而通过request.getRequestDispatcher().forward(request.response)将请求转给另一个页面处理,我想要转回到index.jsp页面中。
4、前端接收后台传过来的数据,并做相应的处理。
此时已跳转到index.jsp页面中,我们可以在JSP里面嵌入java代码。采用request.getAttribute().toString()来获取保存在request范围内的变量,但是将java代码片段嵌入到JSP页面中,会使页面看起来很乱,而使用EL则比较简洁。
EL是一种表达式语言,在Web开发中比较常用,通常与JSTL一同使用。以“${”开头,以“}”结束,中间为合法的表达式。
而使用JSTLl可以取代在传统JSP程序中嵌入的Java代码的做法,大大提高程序的可维护性。由5个功能不同的标签库组成,最常用的就是核心标签库。在使用之前,必须在JSP页面的顶部使用<%@ taglib%>指令定义引用的标签库和访问前缀。核心标签库的指令格式<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
那我们现在使用核心标签库的<c:choose>和<c:when>标签,来实现条件的选择,如果获取到的参数为null1,则弹出用户名不能为空的提示,如果获取到的参数为null2,则弹出密码不能为空的提示。
弹框我使用到了JavaScript的window对象的alert()方法,使用时要加上<script></script>标签。代码如下:
5、最后效果如下: