Java-mvc

对javaMVC终于有了一点自己的理解。

所谓MVC 模型 视图和控制器,就是一种将数据显示和业务逻辑分开编写的一种设计思想。的确把整个逻辑设计代码写在一个jsp页面中是一件恶心并影响效率的事情。将业务逻辑代码聚集到一个部件里面,再被数据显示界面所调用,这样代码可移植性和效率都大大增加。

用一个显示新闻详情页的例子来展示一下: 创建一个详情页 detail.jsp

detail.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%@page import="com.entity.Artical"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
Artical artical = (Artical)request.getAttribute("artical");
if(artical==null){
  response.sendRedirect("index.jsp");
  return;
}
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>"详情页"</title>

  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <link rel="stylesheet" type="text/css" href="<%=basePath%>css/admin.css">


  </head>

  <body>
      <jsp:include page="top.jsp"></jsp:include>
      <jsp:include page="nav.jsp"></jsp:include>
      <div class="w">
          <h1 class="title"><%=artical.getArtical_title() %></h1>
          <p class="data">发表日期<%=artical.getArtical_date() %></p>
          <div class="content">
          <%=artical.getArtical_content() %>
          </div>
      </div>
      <div class="footer1"><center><h5>7.20</h5></center></div>
  </body>
</html>

在创建一个用来控制业务流程的servlet,在他的doget方法中通过访问数据库获得其相应的文章标题和文章详情等数据,通过 request.getRequestDispatcher(“detail.jsp”).forward(request, response);语句发送给detail.jsp

并且把该servlet的映射关系 写成item.html 通过每篇文章的<a>

标签来调用这个servlet

a标签
1
<a href="item.html?artical_id=<%=artical.getArtical_id() %>" value="<%=artical.getArtical_id()%>"><%=artical.getArtical_title() %></a>
detailservlet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          sqlHelper sql = new sqlHelper();
          List<Nav> list = sql.queryallnav();
          String artical_id = request.getParameter("artical_id");
          if(artical_id==null||"".equals(artical_id)){
              response.sendRedirect("index.html");
              return;
          }
          Artical artical  = sql.queryarticalbyid(artical_id);
          sql.destroy();
          request.setAttribute("artical", artical);
          request.setAttribute("navlist", list);
          request.getRequestDispatcher("detail.jsp").forward(request, response);
  }

这样就是一个最简单的mvc模式,希望为今后学习MVC框架打下基础。

Comments