Servlet(Action)之间的数据传递

来源:互联网 发布:pptv网络电视直播下载 编辑:程序博客网 时间:2024/05/08 16:28

Servlet(Action)之间的数据传递

1:如何让用户的请求数据从一个Servlet传递给另一个Servlet

    第一种方式:通过超链接传递数据
    第二种方式:通过表传递取参数。
    第三种方式:通过setAttribute("name",value)与getAttribute(name value)传递参数

  1)通过超链接获得参数:
    需要在超链接后面给定要传递参数的值。但长度有限制

Java代码 复制代码
  1. package testParameter;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9.   
  10. public class TestA extends HttpServlet{   
  11.   
  12.     @Override  
  13.     protected void service(HttpServletRequest request, HttpServletResponse response)   
  14.             throws ServletException, IOException {   
  15.        
  16.         response.setContentType("text/html");   
  17.         PrintWriter out=response.getWriter();   
  18.         String name="hello,everyone";   
  19.         out.println("<html>");   
  20.         out.println("<body>");   
  21.         out.println("<a href='/JSP/test?id="+name+"'>this is a test</a>");   
  22.         out.println("<body>");   
  23.         out.println("</html>");   
  24.                 out.flush();   
  25.            
  26.     }   
  27. }  


通过request.getParameter("id")获得参数的值:

Java代码 复制代码
  1. package testParameter;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. public class Test extends HttpServlet {   
  12.   
  13.     @Override  
  14.     protected void service(HttpServletRequest request, HttpServletResponse response)   
  15.             throws ServletException, IOException {   
  16.            
  17.         String name=request.getParameter("id");   
  18.         response.setContentType("text/html;charset=gb2312");   
  19.         PrintWriter out=response.getWriter();   
  20.            
  21.         out.println("<html>");   
  22.         out.println("<body>");   
  23.         out.println(name);   
  24.         out.println("</body>");   
  25.         out.println("</html>");   
  26.                 out.flush();   
  27.     }   
  28. }  

通过表单获得参数:
Java代码 复制代码
  1. package testParameter;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. public class TableP extends HttpServlet{   
  12.   
  13.     @Override  
  14.     protected void service(HttpServletRequest request, HttpServletResponse response)   
  15.             throws ServletException, IOException {   
  16.         response.setContentType("text/html;charset=gb2312");   
  17.         PrintWriter out=response.getWriter();   
  18.         out.println("<html>");   
  19.         out.println("<body>");   
  20.         out.println("<form action='/JSP/tabletest' method='post'>");   
  21.         out.println("<table align='center'>");   
  22.            
  23.         out.println("<tr>");   
  24.         out.println("<td>");   
  25.         out.println("username:");   
  26.         out.println("</td>");   
  27.         out.println("<td>");   
  28.         out.println("<input type='text' name='name'>");   
  29.         out.println("</td>");   
  30.         out.println("</tr>");   
  31.            
  32.         out.println("<tr>");   
  33.         out.println("<td>");   
  34.         out.println("password:");   
  35.         out.println("</td>");   
  36.         out.println("<td>");   
  37.         out.println("<input type='text' name='pwd'>");   
  38.         out.println("</td>");   
  39.         out.println("</tr>");   
  40.            
  41.         out.println("<tr >");   
  42.         out.println("<td colspan='2'>");   
  43.         out.println("<input type='submit' value='提交'>");   
  44.         out.println("</td>");   
  45.         out.println("</tr>");   
  46.            
  47.         out.println("</table>");   
  48.         out.println("</form>");   
  49.         out.println("</body>");   
  50.         out.println("</html>");      
  51.                 out.flush();   
  52.     }   
  53. }   
  54.   
  55. package testParameter;   
  56.   
  57. import java.io.IOException;   
  58. import java.io.PrintWriter;   
  59.   
  60. import javax.servlet.ServletException;   
  61. import javax.servlet.http.HttpServlet;   
  62. import javax.servlet.http.HttpServletRequest;   
  63. import javax.servlet.http.HttpServletResponse;   
  64.   
  65. public class GetTableP extends HttpServlet{   
  66.   
  67.     @Override  
  68.     protected void service(HttpServletRequest req, HttpServletResponse resp)   
  69.             throws ServletException, IOException {   
  70.            
  71.         resp.setContentType("text/html;charset=gb2312");   
  72.         PrintWriter out=resp.getWriter();   
  73.            
  74.         String name=req.getParameter("name");   
  75.         String pwd=req.getParameter("pwd");   
  76.            
  77.         out.println("<html>");   
  78.         out.println("<body>");   
  79.         out.println(name);   
  80.         out.println("<hr>");   
  81.         out.println(pwd);   
  82.         out.println("</body>");   
  83.         out.println("</html>");   
  84.                 out.flush();   
  85.            
  86.     }   
  87.        
  88.        
  89.   
  90. }  

3:通过setAttribute("name",data)和getAttribute("name");
其中data可以是任何数据类型,另一个servlet通过名字获取该对象getAttribute("name");
注:setAttriute可以被request,session,ServletContext等对象使用。以下以request为例:
Java代码 复制代码
  1. package testParameter;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9.   
  10. public class AttributeA extends  HttpServlet{   
  11.   
  12.     @Override  
  13.     protected void service(HttpServletRequest req, HttpServletResponse resp)   
  14.             throws ServletException, IOException {   
  15.            
  16.         String data="this is just a test,wo need more test for this";   
  17.         req.setAttribute("name", data);   
  18.         req.getRequestDispatcher("/attributeb").forward(req, resp);   
  19.     }   
  20.   
  21. }   
  22. package testParameter;   
  23.   
  24. import java.io.IOException;   
  25. import java.io.PrintWriter;   
  26.   
  27. import javax.servlet.ServletException;   
  28. import javax.servlet.http.HttpServlet;   
  29. import javax.servlet.http.HttpServletRequest;   
  30. import javax.servlet.http.HttpServletResponse;   
  31.   
  32. public class AttributeB extends HttpServlet{   
  33.   
  34.     @Override  
  35.     protected void service(HttpServletRequest req, HttpServletResponse resp)   
  36.             throws ServletException, IOException {   
  37.         
  38.          String name=(String)req.getAttribute("name");   
  39.             
  40.          resp.setContentType("text/html;charset=gb2312");   
  41.          PrintWriter out=resp.getWriter();   
  42.             
  43.          out.println("<html>");   
  44.          out.println("<body>");   
  45.          out.println(name);   
  46.          out.println("</body>");   
  47.          out.println("</html>");   
  48.                  out.flush();   
  49.     }   
  50.        
  51.        
  52.   
  53. }  
原创粉丝点击