今晚在做練習的時候,需要用到從另外一個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 {
}
}