J2EE三层框架基础.docx
- 文档编号:25057184
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:19
- 大小:17.65KB
J2EE三层框架基础.docx
《J2EE三层框架基础.docx》由会员分享,可在线阅读,更多相关《J2EE三层框架基础.docx(19页珍藏版)》请在冰豆网上搜索。
J2EE三层框架基础
一、搞清楚做什么?
(需求分析)
二、采用三层架构和MVC
三、编码
1、搭建开发环境
把需要的jar包导入
jstl.jar
standard.jar
junit.jar(Eclipse自带)
2、建立类存放的包
com.itheima.domain
com.itheima.dao
com.itheima.dao.impl
com.itheima.service
com.itheima.service.impl
com.itheima.web.controler
com.itheima.util
com.itheima.test
为了安全起见,jsp可以放在WEB-INF中的某一目录中pagesjsps
3、
Webroot
<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
ThisismyJSPpage.
Src
Dao
1
packagecom.itheima.dao;
importjava.util.Map;
importcom.itheima.domain.Book;
publicinterfaceBookDao{
/**
*获取所有的书
*@returnMap<书的ID,书对象>
*/
Map
/**
*根据书的ID获取书对象
*@parambookid
*@return
*/
BookfindBookById(Stringbookid);
}
2
packagecom.itheima.dao.impl;
importjava.util.Map;
importcom.itheima.dao.BookDao;
importcom.itheima.domain.Book;
importcom.itheima.util.BookDb;
publicclassBookDaoImplimplementsBookDao{
/**
*获取所有的书
*@returnMap<书的ID,书对象>
*/
publicMap
returnBookDb.getAll();
}
/**
*根据书的ID获取书对象
*@parambookid
*@return
*/
publicBookfindBookById(Stringbookid){
returnBookDb.getBookById(bookid);
}
}
Domain
1
packagecom.itheima.domain;
publicclassBook{
privateStringid;
privateStringname;
privateStringauthor;
privatedoubleprice;//单价
privateStringdescription;
publicBook(){}
publicBook(Stringid,Stringname,Stringauthor,doubleprice,
Stringdescription){
super();
this.id=id;
this.name=name;
this.author=author;
this.price=price;
this.description=description;
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetAuthor(){
returnauthor;
}
publicvoidsetAuthor(Stringauthor){
this.author=author;
}
publicdoublegetPrice(){
returnprice;
}
publicvoidsetPrice(doubleprice){
this.price=price;
}
publicStringgetDescription(){
returndescription;
}
publicvoidsetDescription(Stringdescription){
this.description=description;
}
}
2
packagecom.itheima.domain;
importjava.util.LinkedHashMap;
importjava.util.Map;
//购物车
publicclassCart{
privateintnum;//总数量
privatedoubleprice;//总价
//mapkey=bookidvalue=cartitem
privateMap
publicdoublegetPrice(){
price=0;
for(Map.Entry
map.entrySet()){
CartItemitem=me.getValue();
price+=item.getPrice();
}
returnprice;
}
publicintgetNum(){
num=0;
for(Map.Entry
map.entrySet()){
CartItemitem=me.getValue();
num+=item.getNum();
}
returnnum;
}
publicMap
returnmap;
}
publicvoidsetMap(Map
this.map=map;
}
//向购物车中放书
publicvoidaddBook(Bookbook){
//首先判断该书有没有对应的购物项
Stringbookid=book.getId();
booleanhas=map.containsKey(bookid);
//有:
购物向的数量加1
if(has){
CartItemitem=map.get(bookid);
item.setNum(item.getNum()+1);
}else{
//没有:
创建一个购物项,把书放入
CartItemitem=newCartItem();
item.setBook(book);
item.setNum
(1);
map.put(bookid,item);
}
}
publicvoiddeleteCartItem(Stringbookid){
map.remove(bookid);
}
}
3
packagecom.itheima.domain;
publicclassCartItem{
privateBookbook;
privateintnum;//买了几本同类型的书
privatedoubleprice;//同类型的书的总价
publicBookgetBook(){
returnbook;
}
publicvoidsetBook(Bookbook){
this.book=book;
}
publicintgetNum(){
returnnum;
}
publicvoidsetNum(intnum){
this.num=num;
}
//计算同类型的书的总价
publicdoublegetPrice(){
returnbook.getPrice()*num;
}
}
4
packagecom.itheima.domain;
publicclassMyConstant{
publicstaticfinalStringSHOPPING_CART="shopcart";
}
Service
packagecom.itheima.service;
importjava.util.Map;
importcom.itheima.domain.Book;
publicinterfaceBookService{
Map
BookfindBookById(Stringbookid);
}
2
packagecom.itheima.service.impl;
importjava.util.Map;
importcom.itheima.dao.BookDao;
importcom.itheima.dao.impl.BookDaoImpl;
importcom.itheima.domain.Book;
importcom.itheima.service.BookService;
publicclassBookServiceImpleimplementsBookService{
BookDaodao=newBookDaoImpl();
publicMap
returndao.findAllBooks();
}
publicBookfindBookById(Stringbookid){
returndao.findBookById(bookid);
}
}
Test
packagecom.itheima.test;
importjava.util.ArrayList;
importjava.util.List;
importcom.itheima.domain.Book;
publicclassDemo1{
publicstaticvoidmain(String[]args){
List
list.add(newBook("1","a","b",1,"c"));
Bookb=list.get(0);
b.setId("2");
for(Bookbb:
list){
System.out.println(bb.getId());
}
}
}
Utils
packagecom.itheima.util;
importjava.util.LinkedHashMap;
importjava.util.Map;
importcom.itheima.domain.Book;
publicclassBookDb{
//Map<书的ID,书对象>
privatestaticMap
static{
books.put("ISBN-001",newBook("ISBN-001","JavaWeb开发","杨玉揆",10,"一本特别好的书"));
books.put("ISBN-002",newBook("ISBN-002","安卓入门","卢启龙",11,"一本一般好的书"));
books.put("ISBN-003",newBook("ISBN-003","JavaScript","王昭珽",38,"一本特别好的书"));
books.put("ISBN-004",newBook("ISBN-004","Spring","方立勋",30,"一本很有用的书"));
books.put("ISBN-005",newBook("ISBN-005","Strut2","王昭珽",58,"一本特别好的书"));
books.put("ISBN-006",newBook("ISBN-006","Hibernate","张孝祥",68,"一本超经典的书"));
}
publicstaticMap
returnbooks;
}
publicstaticBookgetBookById(Stringbookid){
returnbooks.get(bookid);
}
}
Web
1
packagecom.itheima.web.controler;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.itheima.domain.Book;
importcom.itheima.domain.Cart;
importcom.itheima.domain.MyConstant;
importcom.itheima.service.BookService;
importcom.itheima.service.impl.BookServiceImple;
publicclassBuyServletextendsHttpServlet{
privateBookServiceservice=newBookServiceImple();
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringbookid=request.getParameter("bookid");
//获取购物车
HttpSessionsession=request.getSession();
Cartcart=(Cart)session.getAttribute(MyConstant.SHOPPING_CART);
Bookbook=service.findBookById(bookid);
//没有购物车,创建一个,并放入session中
if(cart==null){
cart=newCart();
cart.addBook(book);
session.setAttribute(MyConstant.SHOPPING_CART,cart);
}else{
//有,直接将内容添加到购物车
cart.addBook(book);
}
//转向购物车列表
request.getRequestDispatcher("/WEB-INF/pages/listCart.jsp").forward(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
2
packagecom.itheima.web.controler;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.itheima.domain.Cart;
importcom.itheima.domain.CartItem;
importcom.itheima.domain.MyConstant;
//修改数量
publicclassChangeNumServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//得到请求参数bookid和新的数量
Stringbookid=request.getParameter("bookid");
Stringnum=request.getParameter("num");//有可能是负数
intnewNum=0;
try{
newNum=Integer.parseInt(num);
if(newNum<=0)
thrownewRuntimeException();
}catch(Exceptione){
//用户输入错误的数值,提示用户
request.setAttribute("message","数量请输入数字");
request.getRequestDispatcher("/WEB-INF/pages/message.jsp").forward(request,response);
return;
}
//得到购物车。
根据bookid获取购物项
Cartcart=(Cart)request.getSession().getAttribute(MyConstant.SHOPPING_CART);
CartItemitem=cart.getMap().get(bookid);
//修改购物项中的num
item.setNum(newNum);
//转向listCart.jsp
request.getRequestDispatcher("/WEB-INF/pages/listCart.jsp").forward(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
3
packagecom.itheima.web.controler;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.itheima.domain.Cart;
importcom.itheima.domain.MyConstant;
//清空购物车
publicclassClearItemServletextendsHttpServl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 三层 框架 基础