Servlet簡介及獲取引數操作
阿新 • • 發佈:2022-05-17
Servlet介紹
執行在 Web 伺服器或應用伺服器上的程式,可以收集來自網頁表單的使用者輸入,呈現來自資料庫或者其他源的記錄,還可以動態建立網頁。
Servlet獲取引數
示例:
//AddServlet.java package com.example.javaweb01; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class AddServlet extends HttpServlet { //doPost @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //設定編碼,防止中文亂碼 req.setCharacterEncoding("UTF-8"); String fname = req.getParameter("fname"); String priceStr = req.getParameter("price"); //引數均以字串形式獲取,需轉換 Integer price = Integer.parseInt(priceStr); String fcountStr = req.getParameter("fcount"); Integer fcount = Integer.parseInt(fcountStr); String remark = req.getParameter("remark"); System.out.println("fname: " + fname); System.out.println("price: " + price); System.out.println("fcount: " + fcount); System.out.println("remark: " + remark); } }
頁面:
<!--add.html--> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <form action="add" method="post"> 名稱: <input type="text" name="fname"/> 價格: <input type="text" name="price"/> 庫存: <input type="text" name="fcount"/> 備註: <input typr="text" name="remark"/> <input type="submit" value="新增"/> </form> </body> </html>
WEB-INF:
<!--web.xml--> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>AddServlet</servlet-name> <servlet-class>com.example.javaweb01.AddServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddServlet</servlet-name> <url-pattern>/add</url-pattern> </servlet-mapping> </web-app>
執行過程:
- 使用者傳送請求,
action="add"
- 專案中,web.xml中找到
url-pattern /add
(注意/符號) - 找
servlet-mapping
(對映)中的servlet-name
- 找
servlet
中與servlet-mapping
中一樣的servlet-name
- 找
servlet-class
- 使用者請求
method=post
,執行class中的doPost