JSP系统开发学习之四关于用户登录界面的补充——通过request页面传值&wel.jsp的MVC的实现

来源:互联网 发布:国内主机推荐 知乎 编辑:程序博客网 时间:2024/05/18 00:35

1、由于在.jsp页面中不应进行相关.java的逻辑处理文件的调用,因此我们在LoginClServlet.java中当登陆成功后,可通过下列语句获取相关的数据(wel.jsp需要使用的):

ArrayList al=ubc.getUserByPage(1);
int pageCount=ubc.getPageCount();

那么我们如何传递到wel.jsp页面呢?可以通过request设置属性:

request.setAttribute("result", al);
request.setAttribute("pageCount", pageCount+"");

这样在wel界面就可以这样改写代码:

//调用UserBeanCl的方法(创建一个UserBeanCl的方法,然后完成处理),完成分页显示//UserBeanCl ubc=new UserBeanCl();//ArrayList al=ubc.getUserByPage(pageNow);    //要显示的用户信息从request中取ArrayList al=(ArrayList)request.getAttribute("result");//wel界面初始显示的al就是这样获得的

2、对于wel.jsp页面,我们要把它构造成MVC的形式

添加一个Servlet,UsersClServlet.java

package com.jingchenyong.controller;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.jingchenyong.model.UserBeanCl;public class UsersClServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//得到用户期望显示的pageNowString s_pageNow=request.getParameter("pageNow");try {int pageNow=Integer.parseInt(s_pageNow);//调用UserBeanClUserBeanCl ubc=new UserBeanCl();ArrayList al=ubc.getUserByPage(pageNow);int pageCount=ubc.getPageCount();//将al,pageCount放入request中request.setAttribute("result", al);request.setAttribute("pageCount", pageCount+"");//重新跳转回wel.jsprequest.getRequestDispatcher("wel.jsp").forward(request, response);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response);}}

下面是wel.jsp界面的改写:

//要显示的用户信息从request中取
ArrayList al=(ArrayList)request.getAttribute("result");

当点击超链接时,我们提交到Servlet处理

//上一页       if(pageNow!=1){       out.println("<a href=UsersClServlet?pageNow="+(pageNow-1)+">上一页</a>");       }       //显示超链接       for(int i=pageNow;i<=pageNow+4;i++){         out.println("<a href=UsersClServlet?pageNow="+i+">["+i+"]</a>");       }              String s_pageCount=(String)request.getAttribute("pageCount");       //得到pageCount       int pageCount=Integer.parseInt(s_pageCount);              //下一页       if(pageNow!=pageCount)       out.println("<a href=UsersClServlet?pageNow="+(pageNow+1)+">下一页</a>");
这里“UsersClServlet?pageNow=”会使得pageNow被保存在request中,然后UsersClServlet.java通过request.getParameter("pageNow")获取它并通过查询相关数据,保存到request中,供wel.jsp页面调用。

这里注意一下:我们是通过这种方式request.getRequestDispatcher("wel.jsp").forward(request, response)进行页面跳转,因为这样可以实现request的共享。


0 0
原创粉丝点击