JSP/Address Save MVC

JSP MVC Example (2 jsp and 1 class)

Soul-Learner 2008. 1. 8. 23:08

브라우저에서 전송된 주소를 파일에 저장하는 기능을 MVC패턴으로 구현한 예제 (2개의 jsp와 1개의 클래스로 구성)

addrController.jsp

<%@ page import="sample.AddrModel" %>
<%
    AddrModel m = new AddrModel(this, request);
    m.saveAddr();
    request.setAttribute("addr", m.getAllAddr());
%>
<jsp:forward page="/addrView.jsp"/>


addrModel.java

package sample;

import java.io.*;
import java.util.Vector;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

public class AddrModel {
 HttpServletRequest request;
 HttpServlet servlet;
 String filePath;
 
 public AddrModel(HttpServlet servlet, HttpServletRequest request) throws IOException{
  this.request = request;
  this.servlet = servlet;
  filePath = servlet.getServletContext().getRealPath("/WEB-INF/addr.txt");
  File f = new File(filePath);
  if(!f.exists()){
   f.createNewFile();
  }
 }
 
 public void saveAddr()throws IOException {
  String addr = request.getParameter("addr");
  if(addr==null || addr.equals(""))return;
  PrintWriter pw = null;
  pw = new PrintWriter(new FileWriter(filePath,true));
  pw.println(addr);
  pw.close();
 }
 
 public Vector<String> getAllAddr()throws IOException {
  Vector<String> a = new Vector<String>();
  BufferedReader br = new BufferedReader(new FileReader(filePath));
  String line = null;
  while((line=br.readLine())!=null){
   a.add(line);
  }
  br.close();
  return a;
 }
}


addrView.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.util.Vector" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
 Vector<String> addr = (Vector<String>)request.getAttribute("addr");
 for(int i=0;i<addr.size();i++){
  out.println(addr.get(i)+"<br>");
 }
%>
</body>
</html>