JSP系統開發學習之四關於用戶登錄界面的補充——通過request頁面傳值&wel.jsp的MVC的實現

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 {
		//得到用戶期望顯示的pageNow
		String s_pageNow=request.getParameter("pageNow");
		try {
			int pageNow=Integer.parseInt(s_pageNow);
			//調用UserBeanCl
			UserBeanCl ubc=new UserBeanCl();
			
			ArrayList al=ubc.getUserByPage(pageNow);
			int pageCount=ubc.getPageCount();
			//將al,pageCount放入request中
			request.setAttribute("result", al);
			request.setAttribute("pageCount", pageCount+"");
			
			//重新跳轉回wel.jsp
			request.getRequestDispatcher("wel.jsp").forward(request, response);
			
		} catch (Exception e) {
			// TODO: handle exception
			e.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的共享。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章