JavaEE request.getAttribute request.getParameter

来源:互联网 发布:淘宝头条可以赚钱吗 编辑:程序博客网 时间:2024/05/16 09:01

初学者来说,很容易把

 request.getAttribute   和 request.getParameter

两者混起来,比如我= = 

其实request.getParameter 取的是前端界面所传递的参数

 request.getAttribute 取的是servlet之间传递的对象,所取出来的值是个对象,往往需要强制转换

在servlet 的参数传递之间,又要涉及到 request.getRequestDispatcher("").forward(request, response); 

上述提到的是url转发,与之相关的是重定向 response.sendRedirect(url)

url转发是可以将参数进行携带的,重定向不行

展示一个小实验,是老师课上提及的,自己动手写了后,简化了一些无用的代码

餐厅点菜流程

waiter、cooker、sender

package edu.fjnu.Harry;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class waiterServlet extends HttpServlet {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("utf-8");response.setContentType("text/html;charset=utf-8");String menu = request.getParameter("menu");System.out.println("先生您好,您所点的菜单为:"+menu+",我这就送给厨师");request.setAttribute("order", menu);//request.removeAttribute("order");request.getRequestDispatcher("/cooker").forward(request, response);}}

package edu.fjnu.Harry;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class cookerServlet extends HttpServlet {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("utf-8");response.setContentType("text/html;charset=utf-8");String order = (String) request.getAttribute("order");System.out.println(order);System.out.println("收到服务员的菜单,所要做的菜是:"+order+"这就去做");request.setAttribute("dish", order);request.removeAttribute("dish");request.getRequestDispatcher("/sender").forward(request, response);}}


package edu.fjnu.Harry;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class senderServlet extends HttpServlet {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("utf-8");response.setContentType("text/html;charset=utf-8");String menu = (String) request.getAttribute("dish");System.out.println(menu);PrintWriter out = response.getWriter();out.println("您的菜"+menu+"已经做好,请享用");}}

前台界面

<form action = "<c:url value = '/waiter'/>" method ="post">  <div>   <span>请输入菜单<input type="text" name="menu"/></span>   </div>   <div>   <input type="submit" value ="提交">   </div>       </form>


0 0
原创粉丝点击