Java 这段代码昨天运行得很好-现在它不';T
这个代码对我来说非常有效。我创建了一个html表单,用户输入的所有内容都会变成java中的字符串。我将使用这些字符串和一个准备好的语句将信息输入SQLite 我让它工作,测试了几次,它是完美的。然后我将代码最小化了几个小时。我再次打开它,它就停止工作了。现在所有的字符串都是“null”。不知道为什么 这里是雇主DAO准备的声明:Java 这段代码昨天运行得很好-现在它不';T,java,string,http-post,Java,String,Http Post,这个代码对我来说非常有效。我创建了一个html表单,用户输入的所有内容都会变成java中的字符串。我将使用这些字符串和一个准备好的语句将信息输入SQLite 我让它工作,测试了几次,它是完美的。然后我将代码最小化了几个小时。我再次打开它,它就停止工作了。现在所有的字符串都是“null”。不知道为什么 这里是雇主DAO准备的声明: static boolean insertEmployeeAtId(String name, String gender, String dob, String ad
static boolean insertEmployeeAtId(String name, String gender, String dob, String address, String postcode, String natins, String title, String startdate, String salary, String email) throws SQLException {
Employees e = new Employees();
PreparedStatement s;
s = connect.prepareStatement(
"INSERT INTO Emp_db (Name, Gender, DOB, Address, Postcode, NIN, JobTitle, StartDate, Salary, Email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
s.setString(1, name);
s.setString(2, String.valueOf(gender));
s.setString(3, dob);
s.setString(4, address);
s.setString(5, postcode);
s.setString(6, natins);
s.setString(7, title);
s.setString(8, startdate);
s.setString(9, salary);
s.setString(10, email);
return s.execute();
}
}
html表单的一个片段:
<form id="empForm" method="POST" action="/processEmp">
<h1 class="card-title">Add Employees</h1>
<div class="form-group">
<label for="name">Name:</label>
<input id="name" class="form-control" type="text" name=\"name\" pattern="[a-zA-Z-'\s]+" required/>
</div>
添加员工
姓名:
以下是涉及信息处理的控制器:
server.createContext("/processEmp", new HttpHandler() {
@Override
public void handle(HttpExchange t) throws IOException {
boolean insertEmployee;
try {
HashMap<String, String> post = new HashMap<String, String>();
BufferedReader in = new BufferedReader(new InputStreamReader(t.getRequestBody()));
String line = "";
String request = "";
while ((line = in.readLine()) != null) {
request = request + line;
}
String[] pairs = request.split(
"&"
);
for
(
int
i = 0; i < pairs.
length
; i++) {
String pair = pairs[i];
post.put(URLDecoder.decode(pair.split("=")[0], "UTF-8")
, URLDecoder.decode(pair.split("=")[1], "UTF-8"));
}
String EmpName = post.get("name");
String EmpGender = post.get("gender");
String EmpDob = post.get("dob");
String EmpAddress = post.get("address");
String EmpPostcode = post.get("postcode");
String EmpNatins = post.get("natInscNo");
String EmpTitle = post.get("title");
String EmpStartDate = post.get("startDate");
String EmpSalary = post.get("salary");
String EmpEmail = post.get("email");
String allEmp = "Name: " + EmpName + " Gender: " + EmpGender + " Dob: " + EmpDob + " Address: " + EmpAddress + " Postcode: " + EmpPostcode + " NatInscNo: " + EmpNatins + " Title: " + EmpTitle + " StartDate: " + EmpStartDate + " Salary: " + EmpSalary + " Email: " + EmpEmail;
dao.insertEmployeeAtId(EmpName, EmpGender, EmpDob, EmpAddress, EmpPostcode, EmpNatins, EmpTitle, EmpStartDate, EmpSalary, EmpEmail);
BufferedWriter out = new BufferedWriter(new
OutputStreamWriter(t.getResponseBody()));
out.write("Result = ");
out.write(String.valueOf(allEmp));
t.sendResponseHeaders(200, 0);
out.close();
}catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
server.setExecutor(null); // default implementation of threading
server.start();
System.out.println("The server is up and running on port 8005");
}
server.createContext(“/processEmp”,新的HttpHandler(){
@凌驾
公共无效句柄(HttpExchange t)引发IOException{
布尔插入雇员;
试一试{
HashMap post=新的HashMap();
BufferedReader in=新的BufferedReader(新的InputStreamReader(t.getRequestBody());
字符串行=”;
字符串请求=”;
而((line=in.readLine())!=null){
请求=请求+行;
}
String[]pairs=request.split(
"&"
);
对于
(
int
i=0;i<0对。
长度
;i++){
字符串对=对[i];
post.put(URLDecover.decode(pair.split(“=”[0],“UTF-8”)
,URLDecoder.decode(pair.split(“=”[1],“UTF-8”);
}
字符串EmpName=post.get(“name”);
字符串EmpGender=post.get(“性别”);
字符串EmpDob=post.get(“dob”);
字符串EmpAddress=post.get(“地址”);
字符串EmpPostcode=post.get(“postcode”);
字符串EmpNatins=post.get(“natInscNo”);
字符串EmpTitle=post.get(“title”);
字符串EmpStartDate=post.get(“startDate”);
字符串empalary=post.get(“salary”);
字符串EmpEmail=post.get(“电子邮件”);
字符串allEmp=“Name:”+EmpName+“Gender:”+EmpName+“Dob:”+EmpDob+“Address:”+empnaddress+“Postcode:”+EmpNatins+“natinsno:”+EmpNatins+“Title:”+empnatite:“+EmpStartDate+”Salary:“+empnsalary+”电子邮件:“+EmpEmail;
插入员工ID(EmpName、EmpGender、EmpDob、EmpAddress、EmpPostcode、EmpNatins、EmpTitle、EmpStartDate、EmpSalary、EmpEmail);
BufferedWriter out=新的BufferedWriter(新的
OutputStreamWriter(t.getResponseBody());
out.write(“Result=”);
out.write(String.valueOf(allEmp));
t、 发送响应负责人(200,0);
out.close();
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
});
server.setExecutor(空);//线程的默认实现
server.start();
System.out.println(“服务器已启动并在端口8005上运行”);
}
我更想知道它为什么不能工作,以及如何修复它,然后使用另一种方法将html中的输入值转换成java中的字符串。任何形式的帮助都将不胜感激。好吧,我要检查的第一件事是,这些值仍然在
post
中。对不起,你是什么意思?我很清楚,如果问题很傻,我很抱歉。我指的是handle
方法中的post
变量。它包含正确的信息吗?你很想回溯这一点,看看失败在哪里。如果此变量包含正确的值,则知道问题出在该点之后的某个位置。如果没有,你就知道问题出在那一点之前。它必须是正确的,因为这段代码昨天晚上正在工作。我不知道如何使它再次工作。有可能您的HTML更改了吗?我是说,很明显有些事情改变了。也许您前一段时间更改了HTML,然后忘记刷新,所以问题直到现在才出现。