package kr.co.web.model;
import java.util.ArrayList;
public class ListModel {
//객체화하여도 한 곳에 저장되도록
static ArrayList<String> list = new ArrayList<String>();
public void listAdd(String todo) {
list.add(todo); //리스트의 맨 마지막에 데이터를 추가
//System.out.println("list 0번 인덱스 : " + list.get(0));
//list.add(0, todo); 특정 인덱스에 값을 넣어줄 수도 있음
}
public ArrayList<String> getList(){
return list;
}
public void listDel(String idx) {
//list.remove(index); : 지운 값 반환(String)
//list.remove(value); : 지우기 성공여부(boolean)
String value = list.remove(Integer.parseInt(idx));
System.out.println("remove : "+ value);
}
}
ListController
package kr.co.web.controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
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 kr.co.web.model.ListModel;
@WebServlet(urlPatterns = {"/", "/add","/remove"})
public class ListController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String uri = req.getRequestURI();
String ctx = req.getContextPath();
String addr = uri.substring(ctx.length());
System.out.println(addr);
ListModel model = new ListModel();
if(addr.equals("/")) {
System.out.println("root호출");
RequestDispatcher dis = req.getRequestDispatcher("list.jsp");
ArrayList<String> list = model.getList();
//System.out.println("list 0번 인덱스 : " + list.get(0));
req.setAttribute("list", list);
dis.forward(req, resp);
}
if(addr.equals("/remove")) {
System.out.println("삭제요청");
String idx = req.getParameter("idx");
model.listDel(idx);
//forward로 보내보기
//resp.sendRedirect(ctx);
String msg = "정상적으로 삭제되었습니다.";
req.setAttribute("msg", msg);
RequestDispatcher dis = req.getRequestDispatcher("/");
dis.forward(req, resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String todo = req.getParameter("todo"); //client로 부터 받아온 파라메터를
//System.out.println(todo);
//model에 저장하라고 전달
ListModel model = new ListModel();
model.listAdd(todo);
//단순하게 이동만 할 경우 or 서버에 요청을 할 경우에는 sendRedirect 사용
//redirect는 context 경로를 포함해서 보내야 함
resp.sendRedirect(req.getContextPath());
}
}
Vector
Array List와 달리 특정 Thread가 접근하고 있을 경우 다른 Thread가 접근할 수 없음