MVC模式开发

经过前天的javaWEB基础的学习,我们对服务器与浏览器的数据通信,以及Servelet的原理以及Jsp页面的组成有了一定的了解了,当然这些知识是非常繁多而凌乱的,完全通过一个一个小例子来演示原理也未免有点枯燥。今天当然是震奋人心的时刻了,因为终于开始学习javaWeb的开发了,今天老师带领我们将以前的知识融合起来,做了一个贴近实际开发的小Demo,同学们都听得津津有味,哈哈,还是总结一下今天的知识点吧。

java刚开始占web开发的时候就显示了其独特的魅力,那个时候大多都是在jsp+javabean的思想下做开发的。浏览器向服务器jsp页面发出请求,jsp页面调用javabean处理逻辑业务,javabean与数据库联系存取数据,并给jsp页面以回应,最终该jsp响应到浏览器。

随着技术的发展,又出现了以java+servlet+javabean的开发模式,该模式以servlet为中心,适合团队开发,开发速度相对较慢但容易维护。其实这种开发模式已经包含了现在流行的MVC开发模式的思想。

MmodelVviewCcontronller.view的作用便是解释模型,负责页面的呈现,model负责数据的封装及逻辑处理,contronller负责联系协调viewmodel,这也是著名的三层架构的思想。

课堂小练习:图书信息管理。

这个练习是通过MVC的模式完成对图书信息的增,添,删,改操作的。

目录图:

用户发来的请求都将其转发到对应的Servlet作处理后再向浏览器响应页面,我在这里只用了main.jsp的完成所有的响应处理,毕竟要接收的响应比较多,完全由jsp页面来处理会显得比较复杂,为了提高用户的体验度,在编辑和删除图书信息的时候采用了jQueryAjax模式,在添加图书信息时也增加了一定的动画效果。

添加图书效果:

查看所以图书效果:

编辑图书效果(Ajax:

删除图书效果(Ajax)

源码展示:

继承自图书信息操作接口的实现类:

public class BookServiceXMLImpl implements IBookService {

private static String xmlPath=Config.getPath();

private Document getDoc() {

Document doc = null;

try {

doc = DocumentBuilderFactory

.newInstance()

.newDocumentBuilder()

.parse(xmlPath);

} catch (Exception e) {

throw new ServiceException("未找xml文件");

}

return doc;

}

private void write(Document doc) {

if (doc != null) {

Transformer tf = null;

try {

tf = TransformerFactory.newInstance().newTransformer();

Source source = new DOMSource(doc);

Result result = new StreamResult(

new OutputStreamWriter(

new FileOutputStream(

xmlPath),

"utf-8"));

tf.transform(source, result);

} catch (TransformerConfigurationException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (TransformerFactoryConfigurationError e) {

e.printStackTrace();

} catch (TransformerException e) {

e.printStackTrace();

}

}

}

@Override

public void save(Book book) {

Document doc = this.getDoc();

if (doc != null) {

Element root = doc.getDocumentElement();

Element eleBook = doc.createElement("book");

eleBook.setAttribute("bookId", book.getBookId());

Element eleBookName = doc.createElement("bookName");

eleBookName.setTextContent(book.getBookName());

Element eleBookPrice = doc.createElement("bookPrice");

eleBookPrice.setTextContent(book.getBookPrice());

Element eleBookPublish = doc.createElement("bookPublish");

eleBookPublish.setTextContent(book.getBookPublish());

eleBook.appendChild(eleBookName);

eleBook.appendChild(eleBookPrice);

eleBook.appendChild(eleBookPublish);

root.appendChild(eleBook);

this.write(doc);

}

}

@Override

public List<Book> getAll() {

List<Book> books = null;

Document doc = this.getDoc();

Book book = null;

if (doc != null) {

Element root = doc.getDocumentElement();

NodeList list = root.getElementsByTagName("book");

books = new ArrayList<Book>();

for (int i = 0; i < list.getLength(); i++) {

Element eleBook = (Element) list.item(i);

book = eleBookToBook(eleBook);

books.add(book);

}

}

return books;

}

private Book eleBookToBook(Element eleBook) {

Book book;

book = new Book();

book.setBookId(eleBook.getAttribute("bookId"));

book.setBookName(eleBook.getElementsByTagName("bookName").item(0)

.getTextContent());

book.setBookPrice(eleBook.getElementsByTagName("bookPrice").item(0)

.getTextContent());

book.setBookPublish(eleBook.getElementsByTagName("bookPublish").item(0)

.getTextContent());

return book;

}

@Override

public Book findById(String bookId) {

Document doc = this.getDoc();

Book book = null;

if (doc != null) {

Element root = doc.getDocumentElement();

NodeList list = root.getElementsByTagName("book");

for (int i = 0; i < list.getLength(); i++) {

Element eleBook = (Element) list.item(i);

if (bookId.equals(eleBook.getAttribute("bookId"))) {

book = eleBookToBook(eleBook);

break;

}

}

}

return book;

}

@Override

public void update(Book book) {

Document doc = this.getDoc();

Element root = doc.getDocumentElement();

if (root != null) {

NodeList list = root.getElementsByTagName("book");

for (int i = 0; i < list.getLength(); i++) {

Element eleBook = (Element)list.item(i);

if(book.getBookId().equals(eleBook.getAttribute("bookId"))){

eleBook.setAttribute("bookId", book.getBookId());

eleBook.getElementsByTagName("bookName").item(0).setTextContent(book.getBookName());

eleBook.getElementsByTagName("bookPrice").item(0).setTextContent(book.getBookPrice());

eleBook.getElementsByTagName("bookPublish").item(0).setTextContent(book.getBookPublish());

break;

}

}

}

this.write(doc);

}

@Override

public void delete(String bookId) {

Document doc = this.getDoc();

Element root = doc.getDocumentElement();

if (root != null) {

NodeList list = root.getElementsByTagName("book");

for (int i = 0; i < list.getLength(); i++) {

Element eleBook = (Element) list.item(i);

if (bookId.equals(eleBook.getAttribute("bookId"))) {

eleBook.getParentNode().removeChild(eleBook);

break;

}

}

}

this.write(doc);

}

}

Js删除图书源码:

$("a.deleteBook").bind("click",function(){

    bookId=$(this).attr("bookId");

    bookName=$(this).attr("bookName");

    var random = Math.round(Math.random()*10);

    $('<div></div>').html("<img src='js/gif-images/"+random+".gif' alt='delete this?'/>你真的要删除<font style='color:red;font-weight:bolder;'>"+bookName+"</font>吗?").dialog({

            title:"删除提示",

autoOpen: false,

width: 500,

resizable:false,

buttons: {

"确定": function() { 

$(this).dialog("close"); 

$.ajax({

    type:"GET",

    url:"/deleteBookServlet",

    data:"bookId="+bookId,

    success:function(){window.location.href="/viewBooksServlet";},

    error:function(XMLHttpRequest, textStatus, errorThrown){alert(textStatus);}

});

}, 

"取消": function() { 

$(this).dialog("close"); 

},

modal:true

}).dialog('open');

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值