这里使用的是lombok,就不需要这么麻烦的生成get,set,以及构造方法了。
当然你也可以像以前一样生成这些方法,这个无所谓。
Book.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
private Integer id;//书的id
private String name;//书的名字
}
2,创建一个数据库模拟类
因为这里只是简单演示一下购物系统,数据就不从数据库里面获取了,我们可以手动添加一些假数据。
BookDB.java
//创建一个类,模拟数据库
public class BookDB {
private static Map bookMap=new linkedHashMap<>();//创建一个Map集合,来存放书籍
//这里使用静态代码块
static {
bookMap.put("1",new Book(1,"Spring框架开发"));
bookMap.put("2",new Book(2,"Mybatis框架开发"));
bookMap.put("3",new Book(3,"SpringMVC开开发"));
bookMap.put("4",new Book(4,"SpringBoot框架开发"));
bookMap.put("5",new Book(5,"SpringCloud微服务分布式"));
//每次创建对象的时候,都往里面添加五本书
}
//获得所有书的方法
public static Collection getAll(){
return bookMap.values();
}
//根据指定的id获得图书
public static Book getBook(Integer id){
return bookMap.get(id);
}
}
这里面有两个方法:
- 获取所有书籍的方法:getAll( )
- 根据id获取单个书籍的方法:getBook( )
这个Servlet用于展示所有的图书,点击购买之后,就会跳转到购买图书的Servlet中
ShowBooksServlet.java
@WebServlet("/showBooksServlet")
public class ShowBookServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1,解决响应乱码
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
//2,获取当前项目路径,注意,这个结尾没有 “/”
String url = req.getContextPath();
//3,从模拟数据库中,获取所有书籍
Collection books = BookDB.getAll();
//4,遍历这个集合,逐个输出到页面中显示
for (Book book : books) {
//此时的每一个book,其实就是一个Book对象
//因为这只是展示书籍,接下来,我们得点击链接进行购买书籍,所以得拼接一个url,进行页面跳转
String purchaseUrl=url+"/purchaseServlet?id="+book.getId();
writer.print(book.getId()+","+book.getName()+"+purchaseUrl+"'>点击购买");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
浏览器访问:http://localhost:8080/JavaWeb_war_exploded/showBooksServlet
前面的项目名称根据自己的环境更改



