接收用户的输入信息
在 Servlet 中,doPost 和 doGet 服务方法中都有一个参数是 HttpServletRequest 的对象,用户的请求信息存放在该对象中,要获取用户提交的数据需要通过该对象获取。获取用户
请求信息的方法如下:
String getParameter(String name)
String[] getParamterValues(String name)
第一个方法用于获取单值表单元素的值,参数指出要获取的表单元素的名字。例如,用户在输入用户编号的时候使用的表单元素的名字是 userid,要想获取用户在这个输入框中输
入的值,就可以使用下面的代码:
String userid = request.getParameter("userid");
如果参数指定的表单元素的名字不存在,则返回 null。所以通常在处理的时候,需要先判断返回的结果是否为 null。第二个方法用于获取多值表单元素的值,参数也是表单元素的名字,但是返回值是一
个数组
调用业务方法
因为 Servlet 是 Java 类,所以调用业务方法的代码就是我们在 Java 中学习的调用其他类的方法。首先需要创建所使用的 JavaBean 的对象,然后再调用业务方法。
要使用 UserBean 对象,可以使用下面的代码:
UserBean user = new UserBean();
然后调用业务方法,代码如下:
boolean b = user.validate(userid,userpass);
使用 request 存储执行的结果
Servlet 完成控制的功能,查询的结果通过视图(JSP 文件)显示,需要把查询的结果传递给 JSP 文件。因为打开这两个文件属于同一次请求,所以共享同一个 request。因为共享同
一个 request,所以在 Servlet 中把查询结果存储在 request 中,然后在视图中显示结果。在登录功能中不需要传递信息。假设需要把使用 temp 对象保存的查询结果传递到视图,
可以使用下面的代码:
request.setAttribute("user",temp);
第一个参数表示信息的名字,第二个参数存储对象本身,在视图中会根据名字获取。
选择界面对用户进行响应
Servlet 中的最后一项任务就是跳转到显示界面,在显示界面显示信息。在 JSP 中要重定向到某个文件,可以使用<jsp:forward>标签。那么在 Servlet 中如何完成这种跳转呢?在Servlet 中提供了一个
RequestDispatcher 接口,通过这个接口可以完成重定向功能。要 使 用 RequestDispatcher , 需 要 先 创 建 该 类 的对象, 可以通 过 request 的getRequestDispatcher 方法创建。该方法需要一个
String 类型的参数,该参数指定要转向的文件。假设要转向 userlist.jsp,可以使用下面的代码:
RequestDispatcher rd=request.getRequestDispatcher("userlist.jsp");
要完成转向,还需要调用一个方法,用法如下:
rd.forward(request,response);
在学习<jsp:forward>标签的时候,还学习过一个标签<jsp:include>。<jsp:include>标签对应的功能在 Servlet 中的实现也是通过上面的 RequestDispatcher 来实现的。例如现在要包含userlist.jsp,
而不是转向 success.jsp,可以使用下面的代码:
RequestDispatcher rd=request.getRequestDispatcher("success.jsp");
rd.include(request,response);
实际上,还有一个方法,即 response 对象的 sendRedirect 方法可以完成重定向的功能。
例如要转向 success.jsp,可以使用下面的代码:
response.sendRedirect("success.jsp");