컴퓨터 프로그래밍/servlet
ServletContext-여러개의 객체를 list에...
깝돌이
2020. 6. 4. 13:22
ServletContext에 list로 저장하기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
/*
* 나이를 문자로 입력 했을 때 숫자로 입력하는 메세지를 띄우고 return false 시킨다.
*/
function() {
var f = documnet.frm
if(isNaN(f.age.value)){
alert("나이는 숫자입력바랍니다.");
return false;
}
}
</script>
</head>
<body>
<h2 align="center">Register Cafe Member Form</h2>
<form name="frm" action="EntranceServlet" method="post"
onsubmit="return checkData()">
이 름<input type="text" name="name" required="required"><br>
나 이<input type="text" name="age" required="required"><br>
주 소<input type="text" name="addr" required="required"><br>
<input type="submit" value="회원가입">
</form>
</body>
</html>
package servlet.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import servlet.model.MemberVO;
/*
* 회원가입하면 정보를 바탕으로
* MemberVO를 생성 ArrayList에 추가
* 회원가입을 5명이면, MemberVO 5개
* ArrayList를 통째로 ServletContext에 바인딩
*/
public class EntranceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
List<MemberVO> list=Collections.synchronizedList(new ArrayList<MemberVO>());//동기화처리 해줍니다.
private ServletContext context;
@Override
public void init() throws ServletException {
context = getServletContext();
System.out.println("ServletContext의 주소:"+context);
context.setAttribute("list", list);
System.out.println("ServletContext에 카페 입장명단을 저장할 List를 미리 바인딩 합니다.");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String addr = request.getParameter("addr");
System.out.println("1. 폼값을 받아 옵니다. ");
MemberVO vo =new MemberVO(name, age, addr);
System.out.println("2. MemberVO생성");
list.add(vo);
System.out.println("3. MemberVO를 List에 저장");//ServletContext에 바인딩 된 List에 VO가 저장
out.println(name+"님이 카페에 입장하셨습니다. ");
System.out.println(name+"님이 카페에 입장하셨습니다.");
out.println("<a href=viewMember.jsp?name="+name+">viewMember.jsp페이지로 이동합니다.</a>");
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<b><%= request.getParameter("name") %>님이 방금전 회원 가입 하신 분입니다.</b>
</body>
</html>
리스트에 모든 것을 출력하게 jsp 코딩을 해봅니다.
<%@page import="servlet.model.MemberVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<b><%= request.getParameter("name") %>님이 방금전 회원 가입 하신 분입니다.</b><p>
<hr>
<h2>전체 카페 명단 리스트</h2>
<table border="2px">
<%
List<MemberVO> list = (List<MemberVO>)application.getAttribute("list");
for(int i=0; i<list.size();i++){
%>
<tr>
<td><%= i+1 %></td>
<td><%= list.get(i).getName() %></td>
<td><%= list.get(i).getAge() %></td>
<td><%= list.get(i).getAddr() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>