请求的参数类型与取值方式
一.字符串
传:
在页面各个文本相关控件中输入数据,值均以字符串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); } }