[Java] 網頁前端傳資料給後端,透過Ajax
筆記一下前端傳值給後端的寫法
前端.html
<body> <script type="text/javascript"> $.ajax({ url:"./autocomplete", dataType: "json", type: "POST", async: false, timeout: 5000, data: { standardQ: "ABC" //傳給API的參數 }, success: function(data){ //成功的話,執行此區塊 alert("success"); }, }) </script> </body>
後端.java
import java.io.IOException; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/AutoCompleteServlet") public class AutoCompleteServlet extends HttpServlet { private static final long serialVersionUID = 1L; public AutoCompleteServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //設定request編碼 response.setCharacterEncoding("UTF-8"); //設定response編碼 String apiPath = "https://xxx.jsp"; //API之URL //API的參數,依API的條件而定 //此為抓取前端的"ABC"參數 //如果參數為中文字,請參考:https://yijay131724.blogspot.com/2020/07/java-400.html String standardQ = request.getParameter("standardQ"); //API的參數,依API的條件而定 String rows = "10"; //String urlString = "https://xxx.jsp?standardQ=我&rows=10"; String urlString = apiPath + "?standardQ=" + standardQ + "&rows=" + rows; try { URL url = new URL(urlString); //把urlString轉為httpURLConnection使用的URL型態 System.out.println(url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //開啟連線 conn.setConnectTimeout(5000); //設定5秒後愈時 conn.setRequestMethod("GET"); //使用GET方法請求API conn.connect(); //連線 int responseCode = conn.getResponseCode(); //存放連線後的HTTP狀態碼 if (responseCode == 200) { //200為連線成功,並執行自己的需求 PrintWriter writer = response.getWriter(); writer.print(standardQ); //網頁畫面顯示standarQ參數 writer.close(); conn.disconnect(); }else System.err.println("Robot responseCode: " + responseCode); } catch (IOException e) { e.printStackTrace(); } } }
web.xml
<servlet> <servlet-name>AutoComplete</servlet-name> <servlet-class>idv.ycc.servlet.AutoCompleteServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AutoComplete</servlet-name> <url-pattern>/autocomplete</url-pattern> </servlet-mapping>
留言
張貼留言