學習總結------Servlet控制器的簡單運用


前言:

今天將簡單的模擬 MVC模式 對Servlet控制器運行

若有不好或不對的地方,歡迎各位大神進行指導!

1.MVC模式(圖)

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫

2.建包

3.建實體類

3.1可以先立一個二維表做參考作用

考慮各個字段名字、類型

3.2實體類

代碼:

package entity;

public class House {
    //編號
    private String id;
    //房子名字
    private String name;
    //地址
    private String address;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    
    
    
}

 

 

 

4.建業務邏輯類

4.1命名業務邏輯接口

代碼:

package service;

import java.util.List;

import entity.House;

public interface HouseService {
    public List<House> getAllHouses();
}

 

4.2實現類 

代碼:

package service;

import java.util.ArrayList;
import java.util.List;

import entity.House;

public class HouseServiceImpl implements HouseService {

    @Override
    public List<House> getAllHouses() {
        List<House> houseList = new ArrayList<House>();
        //1    光頭強的家    森林188號
        //2    熊大的家    森林樹洞一期3樓
        House h1 = new House();
        House h2 = new House();
        
        h1.setId("1");
        h1.setName("光頭強的家");
        h1.setAddress("森林188號");
        
        h2.setId("2");
        h2.setName("熊大的家");
        h2.setAddress("森林樹洞一期3樓");
        
        
        houseList.add(h1);
        houseList.add(h2);
        
        return houseList;
    }

}

 5.創建一個(Servlet)控制器

在action包中新建Servlet:  HouseAction_showAllHouses。

調用service獲取數據集List

代碼:

package action;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import entity.House;
import service.HouseService;
import service.HouseServiceImpl;
import java.util.List;


@WebServlet("/HouseAction_showAllHouses")
public class HouseAction_showAllHouses extends HttpServlet {
    private static final long serialVersionUID = 1L;
       

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        
        HouseService houseService = new HouseServiceImpl();
        List<House> houseList = houseService.getAllHouses();    
//用於設置標記,在jsp頁面可以獲取(List)request.getAttribute(); request.setAttribute("houseList_label", houseList); //請求並不會中斷,而且繼續在服務端接力運行 //並不是發出一個新的請求 //所以對於客戶端的地址欄,是不會發生變化 request.getRequestDispatcher("show.jsp").forward(request,response); //通知客戶端:你發出一個新的請求:show.jsp //response.sendRedirect("show.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

 

request.getRequestDispatcher().forward(request.response);
這個語句意思是將客戶端的請求轉向(forward)到getRequestDispatcher()方法中參數定義的頁面或者鏈接。

說通俗點就是,當一個客戶端的請求到這個頁面后,不做處理或者不處理完,將請求轉給另一個頁面處理,然后再響應給客戶端。

6.建jsp頁面

建立一個show.jsp,取得request對象中的List。

核心代碼:request.getAttribute("houseList_label");

代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<%@ page import="entity.House" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//獲得Servlet標記的“houseList_label”
List<House> houseList = (List)request.getAttribute("houseList_label");
%><br>

<table width="70%" border="0" cellspacing="1" cellpadding="1" align="center" bgcolor="#000099">
  <tr bgcolor="#FFFFFF">            

    <td>編號</td>
    <td>名字</td>
    <td>地址</td>
  </tr>
<%
for(House house:houseList){
%>
 <tr bgcolor="#FFFFFF">
    <td><%=house.getId()%></td>
    <td><%=house.getName()%></td>
    <td><%=house.getAddress()%></td>
  </tr>
<%
}
%>
</table>
</body>
</html>

 7.在瀏覽器(客戶端)中查看

地址:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM