日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Jsp传值方式(乱码问题的解决)

發布時間:2023/12/10 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jsp传值方式(乱码问题的解决) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,Jsp頁面的三種傳值方式

1,地址欄傳值(get提交)
2,a標簽傳值 (get提交)
3,表單提交 (默認get方式提交)

Get/post取中文都會亂碼。

Jsp的內置對象request取值。

代碼演示。

  • 地址欄傳值(get)
<%// 地址欄輸入 http://localhost:8080/ThirdJsp?test.jsp&name=麥?age=19String name = request.getParameter("name");String age = request.getParameter("age");// 解決get提交方式的亂碼name = new String(name.getBytes("ISO8859-1"), "utf-8");out.print(name + age);%>
  • a標簽傳值(get)

    index.jsp頁面上請求test.jsp

<a href = "test.jsp?name=麥&age=19"> 點我 </a>

test.jsp頁面上的取值代碼與上面相似,也要用(ISO-8859-1)轉碼

  • post表單提交

    test.jsp頁面上

<form action="index.jsp" method = "post"><input type = "text" name = "name"/><input type = "submit" value = "提交"/> </form>

index.jsp

<% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); out.print(name); %>

結論:get的轉碼方式(ISO-8859-1)post也適用,但post只轉成utf-8就行了。

二,非jsp和jsp頁面間傳值

地點:頁面和Servlet之間
人物:表單,checkbox,radio,超鏈接,pageContext,request
Session,application,el表達式,下拉框select
情節如下:

  • pageContext
  • <% // 頁面的上下文,本頁面pageContext.setAttribute("p", "pageContext");String p = pageContext.getAttribute("p").toString();out.print(p);%>
  • 超鏈接
    頁面
  • <button onclick = "send(12)">點我傳值</button><script type="text/javascript">function send(param) {location.href = "s2_12?param=" + param; }</script>

    servlet取值

    // HttpServletRequest req 對象取值String param = req.getParameter("param");if (param != null)System.out.println(param);
  • checkbox和radio兩種框的傳值
    頁面
  • <div><form action="s2_12" method="post"><input type = "checkbox" name = "checkBox" value = "A">A<input type = "checkbox" name = "checkBox" value = "B">B<input type = "checkbox" name = "checkBox" value = "C">C<input type = "checkbox" name = "checkBox" value = "D">D<br/><input type = "radio" name = "gender" value = "male">male<input type = "radio" name = "gender" value = "female">female<br/><input type = "submit" value = "提交"/></form></div>

    servlet取值

    // 得到checkbox和radio的值 比request大的,可以用session取,也可用application取String[] cks = req.getParameterValues("checkBox");if (cks != null) {for (String str : cks) {System.out.print(str + " ");} }System.out.println();param = req.getAttribute("gender");//req.getParameter("param");if (param != null)System.out.println(param);
  • servlet傳值到界面,用el表達式+c標簽在界面取值
    servlet
  • //2, 傳值到界面 request session servletContext 也可以傳List<String> list = new ArrayList<String>();list.add("abc");list.add("jack");list.add("rose");req.setAttribute("strList", list);req.setAttribute("session", "session");// 轉發req.getRequestDispatcher("J2_12.jsp").forward(req, resp);

    頁面取值

    <c:forEach items = "${strList}" var = "str"><%-- 頁面上el表達式取值+c標簽 --%>${ strList }</c:forEach>${ session }<br/>
  • select下拉框的取值
    jsp頁面
  • <form method = "post" action = "getSelectServlet"><select name = "mySelect"><%-- 有value,后臺就取的value,沒得value,取的值就是jack --%><option>jack</option><option value = "2">rose</option><option value = "3">tom</option></select><input type = "submit" value = "233"></form>

    servlet

    protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("utf-8");String str = req.getParameter("mySelect");System.out.println(str);}
  • session 和 application的傳值
  • 首先,搞清楚session和application是什么?并且作用域范圍?

  • session指的是會話,你用session.setAttribute(key, value) 這個key-value對在當前瀏覽器中默認保存30分鐘。在當前瀏覽器任意的頁面可以取到。主要用于保存用戶的登錄信息。
  • application指的是web應用程序,只要服務器不掛掉,application一直存在。用來統計訪問次數等。它是公開的,服務器開啟,所以,你用Google和IE都可以取到application的值。
    • 先訪問下面的jsp
    // Scope_Session_Application.jsp設置值<% application.setAttribute("a1", "application內置對象的值");session.setAttribute("s1", "session內置對象的值");%>
    • 測試session和application, 訪問MyJsp.jsp
    // MyJsp.jsp取值application的值<%=application.getAttribute("a1")%> <br/>session的值<%=session.getAttribute("s1")%>

    • 用IE訪問MyJsp.jsp

    三,服務器響應編碼

    protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 設置post的請求編碼req.setCharacterEncoding("utf-8");// 設置響應編碼resp.setContentType("text/html; charset=utf-8");resp.getWriter().write("<a href='index.jsp'>首頁</a>");}

    頁面顯示

    更多見jsp九大內置對象和作用域

    總結

    以上是生活随笔為你收集整理的Jsp传值方式(乱码问题的解决)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。