ajax傳值到servlet中的一些小問題
阿新 • • 發佈:2018-12-26
ajax傳值到servlet中是要注意很多事項的,有傳中文亂碼的一個問題
今天在學校機房裡用myeclipse的時候使用ajax傳中文值就出現了亂碼問題,設定request.setCharacterEncoding("utf-8")也沒有用
最後使用 new String(name.getBytes("iso8859_1"),"utf-8")解決的
中文亂碼情況有很多問題有些機器就不一定用new String(name.getBytes("iso8859_1"),"utf-8")來解決,所有這裡樓主也提供一種解決方式
接下來樓主需要說的是一個小問題,樓主打java程式碼的時候等號兩邊喜歡空格也就是這樣:int a = 1;
這樣打了很久了,今天寫ajax提交的路徑時也手賤這打了,下面是樓主出錯前的程式碼
大家明顯的可以看到 username和引數中間的等號與兩個值都有空格 然後樓主就這樣傳遞過去了 下面是servlet中的程式碼<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="jQuery/jquery-2.2.3.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var url = "AjaxTestServlet?username = 引數"; $.ajax({ url:url, type:"post", dateType:"text", success:function(data){ alert(data); } }); }); }); </script> </head> <body> <input type="button" id="btn" value="ajax傳值"/> </body> </html>
package com.sidan.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class AjaxTestServlet */ @WebServlet("/AjaxTestServlet") public class AjaxTestServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AjaxTestServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); System.out.println(username); out.println(username); } }
然後頁面中返回的值是這樣的
恩,樓主當時的內心是崩潰,然後反覆檢查程式碼,然後在即將絕望的時候腦袋裡突然靈光一閃,是不是因為等號兩邊有空格的原因然後樓主就把空格去掉了
然後測試返回來的值如下
皆大歡喜,樓主寫這個原因不是證明樓主手殘(哈哈),是想告訴大家遇到錯誤不要心急,一步一步的改程式碼,看最後能不能出正確的結果,其實從錯誤中才能學到更多,
樓主新手,希望多多和大家交流,