請求的參數類型與取值方式


一.字符串

傳:

在頁面各個文本相關控件中輸入數據,值均以字符串String形式,存在value中

<form action="test" method="post">
<input type="text" name="name" /> <br />
        <input type="text" name="age" /> <br />
        <input type="radio" name="gender" value="男"  checked="checked"/><input type="radio" name="gender" value="女"/><br />
        <input type="checkbox" name="favors" value="football"/>Football 
        <input type="checkbox" name="favors" value="book"/>book 
        <input type="checkbox" name="favors" value="java"/>java <br />
        <select name="city" multiple="multiple" size="5">
            <option value="1">北京</option>
            <option value="2">成都</option>
            <option value="3">重慶</option>
        </select>
        <input type="submit" value="提交" /> <br />
   </form>

取:

通過action屬性找到對應的Servlet,在doGet()方法中通過HttpServletRequest參數取值

 getParameter,getParameterValues 返回值類型分別是String,String[ ]  因此這兩個方法用來獲取請求參數中的字符串類型的值

//使用注解表示該Servlet默認的請求路徑
@WebServlet("/test")
public class HttpTest2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //getParameter方法得到請求中的值
        String name = req.getParameter("name");
        int age = Integer.parseInt(req.getParameter("age"));
        //如果一個標識有多個值,則使用getParameterValues
        String[] id = req.getParameterValues("id");
        System.out.println(name);
        System.out.println(age);
        for (String s:id){
            System.out.println(s);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

二. 二進制

傳:

在傳輸文件時使用二進制形式傳遞,當我們使用form表單上傳文件時post請求的時候,需要在form表單中添加enctype="multipart/form-data"屬性。

<form action="file" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar"><br/>
        <input type="submit" value="提交">
    </form>

取:

通過req.getPart() 得到一個Part接口的實例,再通過調用這個實例中的方法,如getSubmittedFileName()得到文件名,write()保存文件到指定路徑等

在傳遞文件時,servlet需要增加注解@MultipartConfig

@WebServlet("/file")
@MultipartConfig
public class HttpTest extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //調用getPart得到一個Part接口
        Part part = req.getPart("avatar");
        //接口中有若干方法
        String name = part.getSubmittedFileName();
        String suffix = name.substring(name.lastIndexOf("."));
        String path = req.getServletContext().getRealPath("/"); 
        System.out.println(path);
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        part.write(path+uuid+suffix);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

 


免責聲明!

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



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