后端的java.sql.Time如何接收前端数据
时间: 2024-03-20 14:43:24 浏览: 15
前端传递时间数据的方式有很多种,最常见的是使用字符串形式传递,例如"2021-08-01 12:34:56"。在后端接收到这样的时间字符串时,可以通过Java中的SimpleDateFormat类将其转换为java.sql.Time类型。示例代码如下:
```java
String timeString = "2021-08-01 12:34:56";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = sdf.parse(timeString);
java.sql.Time time = new java.sql.Time(date.getTime());
```
在上面的代码中,首先将时间字符串解析为java.util.Date类型,然后通过java.util.Date的getTime()方法获取时间戳,再通过java.sql.Time的构造方法将时间戳转换为java.sql.Time类型。
相关问题
写出根据学号,姓名使用vue实现按钮查询功能的前端代码,需要联动后端数据库,并且使用java语言写出后端代码
前端代码:
```html
<template>
<div>
<label>
学号:
<input type="text" v-model="id" />
</label>
<label>
姓名:
<input type="text" v-model="name" />
</label>
<button @click="search">查询</button>
<div v-if="result">{{ result }}</div>
</div>
</template>
<script>
export default {
data() {
return {
id: '',
name: '',
result: '',
};
},
methods: {
search() {
// 根据学号和姓名查询后端接口
fetch(`/api/search?id=${this.id}&name=${this.name}`)
.then((res) => res.json())
.then((data) => {
this.result = data.result;
});
},
},
};
</script>
```
后端代码:
```java
import java.sql.*;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
public class Server {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
private static final String JDBC_USERNAME = "root";
private static final String JDBC_PASSWORD = "root";
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/api/search", new SearchHandler());
server.setExecutor(null);
server.start();
}
static class SearchHandler implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
String query = exchange.getRequestURI().getQuery();
String[] params = query.split("&");
String id = null;
String name = null;
for (String param : params) {
String[] pair = param.split("=");
if (pair[0].equals("id")) {
id = pair[1];
} else if (pair[0].equals("name")) {
name = pair[1];
}
}
String result = null;
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD)) {
String sql = "SELECT * FROM students WHERE id=? AND name=?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, id);
stmt.setString(2, name);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
result = "查询成功";
} else {
result = "查询失败";
}
}
}
} catch (SQLException e) {
e.printStackTrace();
result = "查询出错";
}
String response = "{\"result\": \"" + result + "\"}";
exchange.sendResponseHeaders(200, response.length());
OutputStream os = exchange.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
```
需要注意的是,这里使用了MySQL数据库,需要提前安装MySQL并创建名为`test`的数据库,以及名为`students`的表并插入一些数据。如果使用其他类型的数据库,需要根据实际情况修改JDBC连接URL和用户名密码等参数。
后端开发 使用Java语言和Servlet技术,编写后端代码,实现对学员信息的增删改查操作。在查询学员信息列表和修改学员信息列表两大功能中,需要使用JDBC连接MySQL数据库,从数据库中读取学员信息并返回给前端页面。同时,需要编写相应的SQL语句实现对数据库的操作
好的,那我来讲一下后端开发的具体实现。
1. 创建Java项目
首先,我们需要在IDEA中创建一个Java Web项目。在创建项目的过程中,需要选择Web Application模板,并勾选上Create web.xml deployment descriptor选项,以便在项目中使用Servlet。
2. 导入所需的jar包
在项目中引入所需的jar包,包括MySQL的驱动包和Servlet的jar包等。
3. 编写Servlet代码
首先,我们需要创建一个Servlet类,并实现doGet和doPost方法。在doGet方法中,实现查询学员信息列表的操作;在doPost方法中,实现修改学员信息的操作。
在Servlet中,需要使用JDBC连接MySQL数据库,并编写相应的SQL语句实现对数据库的操作。对于查询学员信息列表的操作,我们可以使用SELECT语句从数据库中读取学员信息;对于修改学员信息的操作,我们可以使用UPDATE语句更新学员信息。
具体代码如下:
```java
public class StudentServlet extends HttpServlet {
private Connection conn;
public void init() throws ServletException {
String url = "jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "123456";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String sql = "SELECT * FROM student_info";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
List<Student> students = new ArrayList<>();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setGender(rs.getString("gender"));
student.setAge(rs.getInt("age"));
students.add(student);
}
request.setAttribute("students", students);
request.getRequestDispatcher("list.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String gender = request.getParameter("gender");
int age = Integer.parseInt(request.getParameter("age"));
try {
String sql = "UPDATE student_info SET name=?, gender=?, age=? WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, gender);
ps.setInt(3, age);
ps.setInt(4, id);
ps.executeUpdate();
response.sendRedirect("StudentServlet");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void destroy() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们先在init方法中建立与MySQL数据库的连接,然后在doGet方法中执行查询学员信息列表的操作,最后将查询结果存储到request中,并转发到list.jsp页面进行展示。在doPost方法中,我们先获取前端页面提交的学员信息,然后执行修改学员信息的操作,并使用response.sendRedirect方法将请求重定向到学员信息列表页面。
4. 编写SQL语句
我们需要编写相应的SQL语句实现对数据库的操作。具体代码如下:
```sql
-- 创建student_info表
CREATE TABLE `student_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学员编号',
`name` varchar(255) NOT NULL COMMENT '学员姓名',
`gender` varchar(255) NOT NULL COMMENT '学员性别',
`age` int(11) NOT NULL COMMENT '学员年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='学员信息表';
-- 向student_info表中插入数据
INSERT INTO `student_info` (`name`, `gender`, `age`) VALUES ('张三', '男', 20);
INSERT INTO `student_info` (`name`, `gender`, `age`) VALUES ('李四', '女', 21);
INSERT INTO `student_info` (`name`, `gender`, `age`) VALUES ('王五', '男', 22);
```
以上就是后端开发的基本步骤。当然,在实际开发中,还需要考虑很多其他方面的问题,比如异常处理、参数校验、代码优化等等。