我想为
n
人获取这些信息。所以我应该更好地编写代码,但由于我是新手,我不知道如何做到这一点。
我的用户在jsp文件中填写的输入:
{
"name":"Jones",
"lastname":" Smith",
"email":"[email protected]",
"gender":"Male",
"age": 28,
"address":
{
"streetaddress":"724th Street",
"city":"New York",
"state": "NY",
"postalcode":"10038"
}
},
{
"name":"Jack",
"lastname":" farmer",
"email":"[email protected]",
"gender":"Male",
"age": 32,
"address":
{
"streetaddress":"121th Street",
"city":"New York",
"state": "NY",
"postalcode":"10045"
}
}
注册.jsp
.
.
.
<input> ...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#register").click(function() {
// get inputs
var name = $('#name').val();
var lastname = $('#lastname').val();
var email = $('#email').val();
var gender = $('#gender').val();
var age = $('#age').val();
var streetaddress = $('#streetaddress').val();
var city = $('#city').val();
var state = $('#state').val();
var postalcode = $('#postalcode').val();
var myVar = JSON.stringify({
name: firstname,
lastname: lastname,
email:email,
gender:gender,
age:age,
"Address":[
{
streetaddress:streetaddress,
city:city,
state:state,
postalcode:postalcode
}],
});
alert(myVar);
$.ajax({
url: '/UserController',
type: 'POST',
data: 'params=' + myVar,//sending json data
dataType: 'json',
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
//just for printing purpose
var json = JSON.stringify(data);
alert("Success ...");
},
error: function(data) {
alert("fail");
}
});
}
});
});
</script>
.
用户控制器.java
@WebServlet(name = "UserController", value = "/userController",urlPatterns =
{"/register"})
public class UserController extends HttpServlet {
Gson gson = new Gson();
User data = gson.fromJson(params, User.class);
Address address = new Address(data.getAddress().streetaddress(),
data.getAddress().getCity(),
data.getAddress().getState(),
data.getAddress().postalcode());
User user = new User(data.getName(),
data.getLastName(),
data.getEmail(),
data.getGender(),
data.getAge(),
data.getAddress());
用户.java
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "first_name")
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "user_name")
private String email;
@Embedded
private Address address;
@Column(name = "gender")
private String gender;
@Column(name = "age")
private int age;
public User(String name,
String lastName,
String email,
Address address,
String gender,
int age) {
this.name = name;
this.lastName = lastName;
this.email = email;
this.address = address;
this.gender = gender;
this.age = age;
}
... setter and getter
我希望我的代码更先进一点。为此,我希望将 JS 文件中的所有输入动态放入数组中并在控制器中读取。由于我对这件事知之甚少,请帮助我学习。(在索引0的数组中获取姓名,索引1获取姓氏,...)
例如:
const myArr = [];
for(int i=0;i<length;i++)
{
myObj[i].firstname= $('#firstname').val();
myObj[i].lastname= $('#lastname').val();
myObj[i].email=$('#email').val();
myObj[i].password1=$('#password1').val();
myObj[i].password2=$('#password2').val();
myArr.push(myobj)
}
如何向该数组添加地址?
我注意到的第一件事是你的
JSON
无效。我已更改您的 JSON
以使其有效。要获得第 N 个用户,您需要将 JSON
转换为 Array
或 List
。
Gson gson = new Gson();
User[] users = gson.fromJson(getFileContent(), User[].class);
import com.google.gson.Gson;
/**
*
* @author blj0011
*/
public class JavaTestingArea {
public static void main(String[] args) {
Gson gson = new Gson();
User[] users = gson.fromJson(getFileContent(), User[].class);
for(User user : users)
{
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getAddress().getCity());
System.out.println(user.getAddress().getStreetAddress());
System.out.println("");
}
//To get an Nth user
System.out.println("Nth user info.");
User user = users[1];
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getAddress().getCity());
System.out.println(user.getAddress().getStreetAddress());
}
static public String getFileContent()
{
return """
[
{
"name": "Jones",
"lastname": " Smith",
"email": "[email protected]",
"gender": "Male",
"age": 28,
"address": {
"streetaddress": "724th Street",
"city": "New York",
"state": "NY",
"postalcode": "10038"
}
},
{
"name": "Jack",
"lastname": " farmer",
"email": "[email protected]",
"gender": "Male",
"age": 32,
"address": {
"streetaddress": "121th Street",
"city": "New York",
"state": "NY",
"postalcode": "10045"
}
}
]
""";
}
}
public class User
{
private long id;
private String name;
private String email;
private Address address;
private String gender;
private int age;
public User(long id, String name, String email, Address address, String gender, int age)
{
this.id = id;
this.name = name;
this.email = email;
this.address = address;
this.gender = gender;
this.age = age;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public long getId()
{
return id;
}
public void setId(long id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public Address getAddress()
{
return address;
}
public void setAddress(Address address)
{
this.address = address;
}
public String getGender()
{
return gender;
}
public void setGender(String gender)
{
this.gender = gender;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append("User{");
sb.append("id=").append(id);
sb.append(", name=").append(name);
sb.append(", email=").append(email);
sb.append(", address=").append(address);
sb.append(", gender=").append(gender);
sb.append(", age=").append(age);
sb.append('}');
return sb.toString();
}
}
public class Address
{
private String streetaddress;
private String city;
private String state;
private String postalcode;
public Address(String streetaddress, String city, String state, String postalcode)
{
this.streetaddress = streetaddress;
this.city = city;
this.state = state;
this.postalcode = postalcode;
}
public String getPostalcode()
{
return postalcode;
}
public void setPostalcode(String postalcode)
{
this.postalcode = postalcode;
}
public String getStreetAddress()
{
return streetaddress;
}
public void setStreetAddress(String streetaddress)
{
this.streetaddress = streetaddress;
}
public String getCity()
{
return city;
}
public void setCity(String city)
{
this.city = city;
}
public String getState()
{
return state;
}
public void setState(String state)
{
this.state = state;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append("Address{");
sb.append("streetaddress=").append(streetaddress);
sb.append(", city=").append(city);
sb.append(", state=").append(state);
sb.append(", postalcode=").append(postalcode);
sb.append('}');
return sb.toString();
}
}
0
Jones
28
New York
724th Street
0
Jack
32
New York
121th Street
Nth user info.
0
Jack
32
New York
121th Street