6월 19일 복습하기
1.JSP 예외처리
일반사용자 입장에서 500이나 404와같은 에러페이지가 나오면 큰문제가 발생한 것처러 인식하기 때문에 일반사용자를 위하여 예외처리 전용 페이지를 만들어
예외가 발생하면 그페이지로 이동하게함.
2.JSP 예외처리과정
(1)예외처리 담당 jsp를 만든다.
<%@ page isErrorPage ='true'%>
(2)예외발생 시 예외처리 담당 jsp파일을 지정 합니다.
<%@ page errorPage='addExcaption.jsp' %>
(3)isErrorPage 설정해놓은 페이지가 에러가 발생하면 예외처리 담당 jsp파일로 이동하게되고, 이동된 jsp파일에서는 exception 내장객체를 사용해서 예외처리를 함
3.액션태그
서블릿으로 작성시 디자이너 입장에서 html과 자바코드가 섞여 있어 복잡해져서 화면과 기능을 나누자해서 JSP가 등장을 했고, JSP도 쓰다보니, 이것도 html태그와 자바 코드를 같이 섞이게 되어 JSP마져 헷갈리고 불편해짐
그래서 좀더 자바코드를 간결하게 하여 복잡성을 줄이고자 JSP액션태그가 나옴

4.include 액션태그
include 디렉티브 태그처럼 화면을 분할해서 관리하는데 사용되는 태그
화면의 유지 보수 및 재사용성을 높일 수 있음
<jsp:include page="포함할 jsp페이지명" flush="실행전 출력버퍼 비움 여부(true or false)">
내용내용
</jsp:include>
5.include 액션태그와 디렉티브태그 비교
디렉티브태그는 정적처리만 가능하고, include된 jsp파일이 합쳐져서 하나의 자바파일로 생성 하지만,
액션태그는 param액션 태그를 이용해 동적처리가 가능하고, include된 jsp파일이 각각 자바파일로 생성된다.
6.포워드 액션 태그
RequestDispatcher 클래스를 대신해서 포워딩하는 방법을 제공
포워딩 시 값을 전달 할 수 있음
<jsp:forward page="포워딩할 JSP페이지">
내용내용
</jsp:forward>
1.로그인 페이지
<%@ 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>
<%
String msg=request.getParameter("msg"); //forward의 param으로 정보를 넘겨받아 변수 msg에 넣어줌
if(msg !=null){ //만약 msg가 null이 아니라면
%>
<h1><%=msg%></h1> <!-- msg를 불러온다. -->
<%} %>
<form action="result.jsp" method="post">
아이디: <input type="text" name="ID"><br>
비밀번호: <input type="password" name="PW"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
2.기능구현 부분
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
String msg="아이디를 입력하지 않았습니다. 아이디를 입력해 주세요."; // msg선언
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String ID =request.getParameter("ID"); //ID파라미터를 불러와서 변수ID에 넣어줌
if(ID.length()==0){ //만약 길이가 0이면
%>
<jsp:forward page="login.jsp"> <!-- login.jsp로 이동해라 -->
<jsp:param value="<%=msg%>" name="msg"/> <!--forward로 이동할때 param의 msg와 같이정보를 넘겨줘라 -->
</jsp:forward>
<%}%>
<h1>환영합니다. <%=ID %> 님!!!</h1>
</body>
</html>
7.useBean, setProperty, getProperty 액션태그 이용하기
디자이너 입장에서 클래스 객체의 속성을 접근할때 자바의 getter와 setter를 사용하는 것보다 태그를 사용하는것이 더 쉽다.
그래서 useBean, setProperty, getProperty 액션태그가 탄생!!!
8.자바 빈
자바빈은 java EE프로그래밍시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는데 사용하는 클래스
자바의 DTO(데이터전송객체)와 VO(값 객체)클래스와 같은 개념이다.
*자바 빈 특징
(1)속성의 접근제한자는 private
(2)각 속성(attribute,property)은 각각 setter 와 getter를 가짐
(3)인자없는 생성자를 반드시 가지며 다른 생성자도 추가 할수 있다.
*자바빈
package study_0619;
public class MemberBean {
private String id;
private String pwd;
private String name;
public MemberBean(){}
public MemberBean(String id,String pwd,String name) {
this.id=id;
this.pwd=pwd;
this.name=name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
*가입양식폼
<%@ 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>
<form action="member.jsp">
<h1>회원가입창</h1>
아이디: <input type="text" name="id"><br>
비밀번호: <input type="password" name="pwd"><br>
이름: <input type="text" name="name"><br>
<input type="submit" value="가입하기">
<input type="reset" value="다시입력">
</form>
</body>
</html>
*기능구현jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, study_0619.*" pageEncoding="UTF-8"
%>
<%
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("id"); //파라미터 불러와서 저장하기
String pwd=request.getParameter("pwd"); //파라미터 불러와서 저장하기
String name=request.getParameter("name"); //파라미터 불러와서 저장하기
MemberBean m =new MemberBean(id,pwd,name); //자바빈 객체 구현
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" align="center" width="100%">
<tr>
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="7%">이름</td>
</tr>
<tr>
<td width="7%"><%=id %></td>
<td width="7%"><%=pwd %></td>
<td width="7%"><%=name %></td>
</tr>
</table>
</body>
</html>
9.useBean action tag
자바 코드로 이루어진 자바빈을 자주 사용할 경우 화면이 복잡해진다는 단점이 있음. 이러한 단점을 보완하기 위해서 나온게 'useBean action tag' 이다.
useBean action tag는 jsp페이지에서 자바 빈을 대체하기 위한 태그임.
<jsp:useBean id="빈 이름" class="패키지 이름을 포함한 자바 빈 클래스 [scope="접근범위"]/>
여기서 id는 jsp페이지에서 자바빈 객체에 접근할때 사용할 이름을 의미
scope는 자바빈에 대한 접근 범위를 지정하는데, page<request<session<application 을 가지며 기본값을 page이다.