第7章 Servlet与MVC开发模式


图7-6文章编辑页面 这个页面的代码是非常简单,主要就是一个form表单。注意3个字段:command、title、content。当点击“发布文章”按钮后,这三个字段的内容都会以请求的方式转发到Controller类。(Controller.do的请求会转到controller类,在web.xml文件中有配置) Controller类接受JSP页面发来的请求,并做出相应的处理,代码如下: package cn.net.nit.mvcDemo.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.net.nit.mvcDemo.bean.ArticlePublish; public class Controller extends HttpServlet { private static final long serialVersionUID = 1L; public Controller() {super();} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } // 在Servlet中并没有直接处理所提交的请求,而是把请求的处理推后到ArticlePublish类中, protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取JSP页面传入的操作参数,根据参数决定执行哪些操作,跳转到哪个页面。 String commond = request.getParameter("commond"); if (commond.equals("publish")) { // 获取JSP页面表单的内容 String title = request.getParameter("title"); String content = request.getParameter("content"); // 如果出现中文乱码,要进行转码 title = new String(title.getBytes("iso-8859-1"), "utf-8"); content = new String(content.getBytes("iso-8859-1"), "utf-8"); // 调用发布文章的方法,保存文章 ArticlePublish ap = new ArticlePublish(); boolean flag = ap.publish(title, content); // 将需要显示的内容放在request里面, request.setAttribute("title", title); request.setAttribute("content", content); // 跳转到文章显示页面 RequestDispatcher dispatcher = null; if (flag == true) dispatche= getServletContext().getRequestDispatcher( "/show.jsp"); else dispatcher=getServletContext().getRequestDispatcher( "/wrong.jsp"); dispatcher.forward(request, response); } else { System.out.println("其他操作!!!"); } } } 从以上代码中,容易发现,Controller类把参数接收下来后,只是做了个编码转换,最终的业务处理还是交给ArticlePublish类来负责,最后把要显示的结果保存在请求中,并再次转发。显然Controller类相当于一个请求分发器,起控制作用。 业务处理类ArticlePublish处理Controller转发过来的请求,代码如下: package cn.net.nit.mvcDemo.bean; public class ArticlePublish { public boolean publish(String title, String content) { if (title.equals("")) { return false; } System.out.println("title = " + title); System.out.println("content = " + content); System.out.println("相关的处理过程,把数据保存到数据库等..."); return true; } /** *

其他的业务方法

*/ public void otherMethods() { //省略.... } } 首先说明一点,这个业务类不真正涉及数据库的操作,为了方便起见,用打印语句来模拟代替,关于操作数据库的技术,如JDBC技术等,在后面的章节会提到。在ArticlePublish 类有处理业务的方法,所有的业务都是交给业务类处理的,M层在MVC模式中是核心。 显示最后的结果,如图7-7所示 图7-7结果显示页面 该显示页面为show.jsp,代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 文章显示 文章标题:<%=request.getAttribute("title") %>

文章内容:<%=request.getAttribute("content") %> 7.4本章小结 通过本章的学习,使读者对Servlet和JSP之间的关系以及MVC设计模式有更深刻的理解,使读者熟练掌握MVC的运用。 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值