自动抓取网页数据(servlet自动获取前端页面及代码1)提交数据介绍)
优采云 发布时间: 2021-12-29 03:07自动抓取网页数据(servlet自动获取前端页面及代码1)提交数据介绍)
servlet自动获取前端页面的jsp提交数据
下面是我在学习过程中由于前端页面提交参数太多,后台servlet封装实体类太麻烦而写的一个工具类。应用jsp/servlet数据提交后,基于MVC+MyBatis的数据持久化过程。这里只介绍将数据封装对象从页面提交到servlet(控制器)的过程。MVC+MyBatis 对数据库的访问这里就不介绍了。
1.前端页面和代码
1)前端表单页面构建(用来测试简单构建的页面有点丑~)
2)前端jsp页面代码
这里使用ajax异步get,去除缓存提交表单。请按传统方式自测。我已经测试过了,我不会在这里展示它。
注:Ajax提交表单部分使用了jQuery的serialize()序列化函数,初学者可以参考jQuery帮助文档。如果不明白,可以使用数据部分中的“字符串”或json对象,以常规方式提交数据。
1
3
4
5
6
7 Insert title here
8
9
10 $(function(){
11 $("#submitBtn").click(function(){
12 $.ajax({
13 url:"${pageContext.request.contextPath }/testPage",
14 data:$("#formId").serialize(), //jQuery中的函数,序列化表单数据
15 type:"get",
16 cache:false,
17 success:function(jsonObj){
18 alert(jsonObj.msg);
19 $("#formId")[0].reset();//重置表单
20 }
21 })
22 });
23 })
24
25
26
27
28
29 ID:
30 姓名:
31 性别:
32 年龄:
33 价格:
34
35
36
37
2.实体类
5个属性并提供set/get方法
1 package com.domain;
2
3 public class Person {
4 String username;
5 String sex;
6 int age;
7 Double price;
8 Long id;
9 public String getUsername() {
10 return username;
11 }
12 public void setUsername(String username) {
13 this.username = username;
14 }
15 public String getSex() {
16 return sex;
17 }
18 public void setSex(String sex) {
19 this.sex = sex;
20 }
21 public int getAge() {
22 return age;
23 }
24 public void setAge(int age) {
25 this.age = age;
26 }
27 public Double getPrice() {
28 return price;
29 }
30 public void setPrice(Double price) {
31 this.price = price;
32 }
33 public Long getId() {
34 return id;
35 }
36 public void setId(Long id) {
37 this.id = id;
38 }
39 }
3.后台Servlet代码
1)封装实体类对象
这里只有前端提交数据并输出到控制台,证明数据已经获取到并封装在对象中。
其中,p = (Person) EncapsulationUtil.getJavaBean(Person.class, request); 我用的是打包工具,懒得自己写的,后面提供源码。稍后将给出详细说明。
注意:当前端提交的数据和我们需要保存到数据库的数据不完整时,可以在servlet中获取到包对象后手动设置。比如数据的主键id一般是后台生成UUID设置的,需要手动设置。
<p> 1 package com.controller;
2
3 import java.io.IOException;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import javax.servlet.ServletException;
8 import javax.servlet.http.HttpServlet;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 import com.domain.Person;
13 import com.fasterxml.jackson.databind.ObjectMapper;
14 import com.utils.EncapsulationUtil;
15
16 public class testPage extends HttpServlet {
17
18 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
19 //定义数据封装体的对象
20 Person p;
21 //定义用于返回json的数据存放集合
22 Map map = new HashMap();
23
24 try {
25 //获取前端页面表单提交的数据
26 p = (Person) EncapsulationUtil.getJavaBean(Person.class, request);
27 //打印封装体中的数据结果
28 System.out.println("ID---->"+p.getId()+""+p.getUsername()+""+p.getAge()+"