开发服务,我写了一个航班信息查询的网站, 系统后端采用java语言,jersey框架,通过jdbc和数据库建立连接,数据库mysql,前端vue+elementUI, 帮我写基于Jersey框架完成资源服务的实现这部分的实验报告
时间: 2024-02-25 09:58:20 浏览: 88
BackEndXsoft:这个后端的建立是出于学术目的,并具有其他语言,框架和开发工具
好的,我来为您撰写实验报告。
一、实验目的
本实验旨在通过使用Jersey框架,实现一个航班信息查询的网站的资源服务。通过此实验,可以加深对Jersey框架及其应用的理解,掌握Jersey框架完成资源服务的实现方法。
二、实验环境
1. 操作系统:Windows 10
2. 开发工具:Eclipse
3. 语言:Java
4. 框架:Jersey
5. 数据库:MySQL
三、实验过程
1. 创建项目
首先,在Eclipse中创建一个新的Maven项目,并导入Jersey框架和MySQL驱动等相关依赖。
2. 配置web.xml
在项目的web.xml文件中,配置Jersey框架的Servlet,用于处理RESTful请求。
```xml
<servlet>
<servlet-name>Jersey Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Servlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
```
此处定义了一个名为Jersey Servlet的Servlet,使用org.glassfish.jersey.servlet.ServletContainer类作为处理器。我们还指定了一个名为jersey.config.server.provider.packages的初始化参数,用于指定包含RESTful资源类的包名。在servlet-mapping中,我们将Jersey Servlet映射到/api/*的URL路径下。
3. 定义资源类
在com.example.resources包下,定义一个名为FlightResource的Java类,用于处理航班信息查询的请求。在该类中,我们使用注解@Path和@GET来定义资源类和HTTP方法的路径。在本例中,我们定义了一个查询航班信息的方法,根据航班号和日期查询航班信息。
```java
@Path("/flight")
public class FlightResource {
@GET
@Path("/{flightNo}/{date}")
@Produces(MediaType.APPLICATION_JSON)
public Flight getFlight(@PathParam("flightNo") String flightNo, @PathParam("date") String date) {
// 查询数据库,返回航班信息
Flight flight = FlightDao.getFlight(flightNo, date);
return flight;
}
}
```
4. 定义数据访问对象
在com.example.dao包下,定义一个名为FlightDao的Java类,用于实现对MySQL数据库的访问。在该类中,我们使用JDBC连接MySQL数据库,并编写相应的SQL语句实现航班信息的查询。
```java
public class FlightDao {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/flight";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
public static Flight getFlight(String flightNo, String date) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Flight flight = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM flight WHERE flight_no = ? AND flight_date = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, flightNo);
ps.setString(2, date);
rs = ps.executeQuery();
if (rs.next()) {
flight = new Flight();
flight.setFlightNo(rs.getString("flight_no"));
flight.setFlightDate(rs.getString("flight_date"));
flight.setDeparture(rs.getString("departure"));
flight.setArrival(rs.getString("arrival"));
flight.setDepartureTime(rs.getString("departure_time"));
flight.setArrivalTime(rs.getString("arrival_time"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return flight;
}
}
```
5. 测试
完成以上步骤后,我们可以启动项目,并通过浏览器访问http://localhost:8080/api/flight/CA123/20220101,查询航班号为CA123,日期为20220101的航班信息。
四、实验总结
本实验通过使用Jersey框架和MySQL数据库,实现了一个航班信息查询的网站的资源服务。通过此实验,我们掌握了Jersey框架完成资源服务的实现方法,以及使用JDBC连接MySQL数据库的方法。在实践中,还需要注意安全性、性能等方面的问题,并根据需求进行相应的优化。
阅读全文