兩個servlet之間數值的傳遞

今晚在做練習的時候,需要用到從另外一個servlet鍾傳過來的參數,然後試了好多次,傳過來的值都是空的,後來成功了。現在把解決辦法貼出來,希望對大家有幫助。

第一個servlet,也就是要把值傳出去的servlet,寫以下語句:

String pageNow=(String)request.getAttribute("pageNow");
session.setAttribute("pageNow", pageNow);

第二個servlet,接受參數的那個:

HttpSession session = request.getSession(true)

String s_pageNow = (String) session.getAttribute("pageNow");

這樣我們就可以直接在第二個servlet中取值了。





package servlet;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import model.User;
import db.DB;


public class MainServlet extends HttpServlet {


// 重寫init函數
public void init() {
try {
FileReader f = new FileReader("f:\\myCounter.txt");
BufferedReader br = new BufferedReader(f);
String numVal = br.readLine();
br.close();
this.getServletContext().setAttribute("visitTimes", numVal);


} catch (Exception ex) {
ex.printStackTrace();
}


}


// 重寫destroy函數
public void destroy() {
try {
FileWriter fw = new FileWriter("f:\\myCounter.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(this.getServletContext().getAttribute("visitTimes").toString());
bw.close();


} catch (Exception ex) {
ex.printStackTrace();
}
}


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("gb2312");
response.setContentType("gb2312");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
JspUserBeanCl ubc = new JspUserBeanCl();
DB db = new DB();
HttpSession session = request.getSession(true);
User user = new User();
session.setAttribute("user", user);
// 爲AddServlet傳一個用戶
session.setAttribute("user", user);
if (user == null) {
user = db.checkUser(username, pwd);
}
// request.getSession().setAttribute("username", username);


if (user != null) {
ArrayList all = ubc.getUsersByPage(1);
int pageCount = ubc.getPageCount();
request.setAttribute("result", all);
request.setAttribute("pageCount", pageCount + "");
request.setAttribute("pageNow", "1");

String pageNow=(String)request.getAttribute("pageNow");
session.setAttribute("pageNow", pageNow);


String times = this.getServletContext().getAttribute("visitTimes").toString();
// 對times++再重新放回servlet
this.getServletContext().setAttribute("visitTimes", (Integer.parseInt(times) + 1) + "");
this.getServletContext().setAttribute("username", username);
// response.sendRedirect("main.jsp");
request.getRequestDispatcher("JspUserClServelet").forward(request, response);
} else {
response.sendRedirect("login.jsp");
}
}


}



第二個servlet:


package servlet;


import java.io.IOException;
import java.util.ArrayList;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class JspUserClServelet extends HttpServlet {


public JspUserClServelet() {
super();
}


public void destroy() {
super.destroy(); // Just puts "destroy" string in log


}


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


doPost(request, response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


// 得到用戶希望顯示的pageNow

HttpSession session = request.getSession(true);


String s_pageNow = (String) session.getAttribute("pageNow");

// String s_pageNow = request.getParameter("1");
try {

int pageNow = Integer.parseInt(s_pageNow);// 這個可以合併成一個語句:int
// int pageNow = 1;
JspUserBeanCl ubc = new JspUserBeanCl();


ArrayList all = ubc.getUsersByPage(pageNow);
int pageCount = ubc.getPageCount();


session.setAttribute("result", all);
session.setAttribute("pageCount", pageCount + "");
// request.setAttribute("pageNow", pageNow + "");
session.setAttribute("pageNow", "1");
response.sendRedirect("main.jsp");
System.out.println("第二個");
// request.getRequestDispatcher("main.jsp").forward(request,
// response);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}


public void init() throws ServletException {
}


}

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