package com.itcast.chapter05.session.example01;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 模拟数据库
* @author Administrator
*
*/
public class BookDB {
private static Map<String,Book> books = new LinkedHashMap<>();
static {
books.put("1",new Book("1", "javaweb开发"));
books.put("2",new Book("2", "jdbc开发"));
books.put("3",new Book("3", "java基础"));
books.put("4",new Book("4", "spring开发"));
}
//获取所有的图书
public static Collection<Book> getAllBook(){
return books.values();
}
//根据id获得图书信息
public static Book getBookById(String id) {
return books.get(id);
}
}
package com.itcast.chapter05.session.example01;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 显示可购买的图书列表
* Servlet implementation class ListBookServlet
*/
@WebServlet("/ListBookServlet")
public class ListBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ListBookServlet() {
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");//防止中文输出乱码
PrintWriter pw = response.getWriter();
Collection<Book> books = BookDB.getAllBook();//获取全部图书
pw.write("本站提供的图书有:<br/>");
for (Book book : books) {
String url = "/chapter05/PurchaseServlet?id="+book.getId();
pw.write(book.getName()+"<a href='"+url+"'>点击购买</a><br/>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
对ListBookServlet.java进行手动编译时,发生错误,提示找不到符号
然后我去对Book类进行编译没有出错,而当我对BookDB进行编译时,又提示错误找不到符号,请问是什么原因?
你既没有import对应的类,也没用通过包名.Book的方式调用,编译器上哪给你找Book去
因为Book,BookDB,ListBookServlet都在一个example01包下,所以我就没有import;神奇的是,现在我项目已经可以在tomcat上跑起来,但是却还是没法手动编译通过,求大佬解答。
大概和虚拟机解析包的目录有关,可以参考https://bbs.csdn.net/topics/392019202,在包的外层目录调用javac就可以通过编译了
用javac命令编译,需要的文件需要跟编译文件在同一个文件夹下。
大佬,我看了参考答案,可是还是没有生效,现在应该怎么办啊
你应该在src目录下进行编译