当我调用URL 1时,以下代码段能够将我数据库中的所有汽车作为JSON返回,并且我可以在浏览器中显示它们。但是,当我使用URL 2时,我什么也得不到,浏览器显示404错误。但奇怪的是,错误没有显示消息" Car not found"。它显示"原始服务器没有找到目标资源的当前表示,或者不愿意透露它存在。"。
我测试了RegexUtil类,当我调用URL 2时,它确实将Long返回为1,当我调用URL 1时,它将Long返回null。
我做错了什么?
1)http://localhost:8080/Cars/cars 2)http://localhost:8080/Cars/cars/1
String requestUri = request.getRequestURI();
Long id = RegexUtil.matchId(requestUri);
if (id != null) {
//this if test is never executed even when id != null
// id was informed
Car car = carService.getCar(id);
if (car != null) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(car);
ServletUtil.writeJSON(response, json);
} else {
response.sendError(404, "Car not found");
}
} else {
//this else executes fine
// Show car list
List<Car> cars = carService.getCars();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(cars);
ServletUtil.writeJSON(response, json);
}
答案 0 :(得分:0)
问题已解决。
servlet注释不正确。
星号丢失了
@WebServlet(urlPatterns = { "/cars/*" },