Servlet與JSP之間相互傳值問題


一、JSP向Servlet傳值

JSP向Servlet傳值的方式有三種:URL后面跟參數、form表單提交、在JSP內置對象Session設置值。

  • URL后面跟參數

    JSP文件:<a href="Receive?name=xiaoijing&password=123456">click me</a>

    Servlet文件:String name=request.getParameter("name");

    說明:href="Receive?name=xiaoijing&password=123456",Receive為請求的目的地(URL),"?"后面跟參數,name為參數名,xiaojing為參數值,多個參數用"&"隔開,在servlet中是通過request.getParameter("參數名")獲取的,注意request.getParameter("參數名")獲取的所有值都是字符串。

  • form表單提交

    JSP文件:         

<form action="Send" method="post">
    <input type="text" name="account" />
    <input type="submit" value="提交"/>
</form>

 

    Servlet文件:String account=request.getParameter("account");

     說明:<form action="Send" method="post">:action后面跟請求的目的地(URL),method請求方法常用的有get和post。<input type="text" name="account" />:傳遞的參數必須有name的屬性,不然在servlet找不到該參數。

 

  • 在JSP內置對象Session設置值

    JSP文件:         

<%
  session.setAttribute("school", "dgut");
  request.setAttribute("name", "xiao");  //servlet無法獲取該參數
%>

    Servlet文件:

        String school=(String) request.getSession().getAttribute("school");  

    說明:servlet只能接受到到session.setAttribute("school", "dgut")傳來的值,無法接收到request.setAttribute("name", "xiao")傳來的值,在servlet通過 request.getSession().getAttribute("school")獲取參數值。

 

二、Servlet向JSP傳值

servlet向JSP傳值有兩種方法:重定向和URL轉發。

  • 重定向:

    servlet文件:     

response.sendRedirect("https://www.baidu.com");//重定向到web應用外部
response.sendRedirect("Receive");//重定向到web應用內部,URL前面沒有“/”,默認在應用根目錄下面
response.sendRedirect("/Monitor/Receive");//重定向到web應用內部,URL以根開頭的,前面必須以應用開始

      說明:重定向是路徑的跳轉,重定向完成后,瀏覽器會重新發起新的請求,上一次的參數無法轉發。

 

  • URL轉發

     servlet文件:

String url="/JspGetServlet.jsp";//URL必須以“/”開頭
//ServletContext sc=getServletContext();
//RequestDispatcher requestDispatcher=sc.getRequestDispatcher(url); //通過ServletContext 獲取轉發器
RequestDispatcher requestDispatcher=request.getRequestDispatcher(url);//通過request獲取轉發器
requestDispatcher.forward(request, response);

     JSP文件:   

<%=request.getParameter("account") %>   //通過內置對象request獲取
${param.account}   //通過EL表達式獲取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM