接收客户端表单数据,并将其封装为对象 港控/mmm° 2024-03-23 14:25 20阅读 0赞 一、定义实体类 public class UserBean { private Integer id ; private String name; @JsonFormat(pattern = "yyyy-MM-dd")//指定对象序列化为JSON时的日期格式 private LocalDate birthday; private Integer money; private Double payTaxes; } 二、html表单 <form action="http://localhost:9090/add" > 姓名:<input type="text" name="name"><br> 生日:<input type="text" name="birthday"><br> 工资:<input type="text" name="money"><br> 缴税:<input type="text" name="payTaxes"><br> <input type="submit" value="添加"> </form> 三、业务组件 public class AddServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); //将表单数据封装为用户对象 UserBean user = new UserBean(); System.out.println(user); this.fullBean(user,req); resp.getWriter().println(user.toString()); } // private void fullBean(Object object,HttpServletRequest request){ //得到表单数据的键名 Enumeration<String> en =request.getParameterNames(); try { while (en.hasMoreElements()){//判断是否有下一个元素 //取出下一个元素 String str = en.nextElement(); //根据表单名,得到表单值 String value = request.getParameter(str); //注意:属性名和表单名 必须一致 //根据属性名,得到属性值 Field f = object.getClass().getDeclaredField(str); f.setAccessible(true); //根据不同的属性类型 完成类型转换 if(f.getType() == String.class){ f.set(object,value); } else if (f.getType() == int.class || f.getType()==Integer.class) { f.set(object,Integer.parseInt(value)); } else if (f.getType()==double.class||f.getType()==Double.class) { f.set(object,Double.parseDouble(value)); } else if (f.getType()== LocalDate.class) { f.set(object,LocalDate.parse(value)); } else if(f.getType()==String[].class){ f.set(object,request.getParameterValues(str)); } } } catch (Exception e) { e.printStackTrace(); } } } * getParameter() 根据表单名,得到表单值,注意有多个name属性时它取的是第一个值 * getParameterValues()得到数组 (复选框/列表框就需要用它) 四、启动 public class MainTomcat { public MainTomcat(){ Tomcat tomcat = new Tomcat(); //设置启动端口 tomcat.setPort(9090); //引导http引擎 tomcat.getConnector(); //创建上下文对象 Context context = tomcat.addContext("",null); //注册servlet Wrapper w1= Tomcat.addServlet(context,"add",new AddServlet()); w1.setLoadOnStartup(1); w1.addMapping("/add"); try { //启动tomcat tomcat.start(); } catch (LifecycleException e) { throw new RuntimeException(e); } } public static void main(String[] args) { new MainTomcat(); } }
还没有评论,来说两句吧...