필터란?.

필터의 생성방법
1. 필터 클래스는 일반 자바 파일로 생성합니다.
2. Filter 인터페이스를 상속 받습니다
3. 일반적으로 doFilter메서드를 오버라이딩 합니다
4. 사용 후 doFilter(request, response); 메서드를 반드시 사용한다

필터의 사용방법
1. 어노테이션 방법
Ex) */board

체인필터01
//1. Filter인터페이스를 상속받고
//2. web.xml or 어노테이션 중 하나를 선택해서 필터로 등록
//@WebFilter("/*")//모든요청
public class ChainFilter01 implements Filter{
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("1번 필터 실행됨");
//다음으로 연결
chain.doFilter(request, response);
}
public void init (FilterConfig fiterConfig) throws ServletException {
}
체인필터02
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("2번째 필터 실행됨");
chain.doFilter(request, response);
}
2. Web.xml에 선언

<!-- web.xml에 필터 등록 -->
<filter>
<filter-name>first</filter-name>
<filter-class>com.myweb.util.filter.ChainFilter01</filter-class>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 필터 체이닝(단, 체이닝을 하려면 web.xml을 이용해야합니다) -->
<filter>
<filter-name>second</filter-name>
<filter-class>com.myweb.util.filter.ChainFilter02</filter-class>
</filter>
<filter-mapping>
<filter-name>second</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
============================
글작성은 세션 정보를 가지고있으면 가능(필터등록)
//1. 글작성(세션정보를 가지고있는 가용자만 적용되는 필터)
@WebFilter({"/board/write.board","/board/regist.board"})
public class BoardFilter01 implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//세션정보를 얻어서 확인
//부모를 자식으로 캐스팅
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
HttpSession session = req.getSession();
UsersVO vo = (UsersVO)session.getAttribute("userVO"); //회원측에서 만든 userVO타입으로 캐스팅
if(vo == null) {//로그인이 만료된 회원
// res.sendRedirect("/MyWeb/user/login.jsp");
//out객체
res.setContentType("text/html; charset=UTF-8;");//응답내용에 관한 설정
PrintWriter out = res.getWriter();
out.println("<script>");
out.println("alert('로그인이 필요한 서비스입니다');");
out.println("location.href='/MyWeb/user/login.jsp';");
out.println("</script>");
return; //컨트롤러를 실행하지 않는다
}
chain.doFilter(request, response); //다음 필터 or 컨트롤러의 연결
}
}
==========================
글수정,삭제는 작성자만이 가능(필터등록)
1.등록화면에서 작성자를 id값으로 고정.
boardwriter.jsp
<td>작성자</td>
<td>
<input type="text" name="writer" value="${sessionScope.userVO.id}" size="10" readonly required>
</td>
밸류값을 넣고 읽기 전용 태그를 넣어 작성자 고정을해줌
=====
2.각각 요청에서 writer값이 반드시 담겨 넘어오도록 처리
boardcontent.jsp
<input type="button" value="수정" onclick="location.href='modify.board?bno=${vo.bno}&writer=${vo.writer}'">
<input type="button" value="삭제" onclick="location.href='delete.board?bno=${vo.bno}&writer=${vo.writer}'">  
수정,삭제 버튼에 writer값이 넘어오도록 & (값)을 넣어줌
=====
3.세션 id와 writer의 비교
//글 수정, 삭제에 대한 필터
@WebFilter({"/board/modify.board","/board/update.board","/board/delete.board"})
public class BoardFilter02 implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
request.setCharacterEncoding("utf-8"); //한글처리
/*
* 1.등록화면에서 작성자를 id값으로 고정.
* 2.각각 요청에서 writer값이 반드시 담겨 넘어오도록 처리
* 3.세션 id와 writer의 비교
*/
//세션
HttpSession session = req.getSession();
UsersVO vo = (UsersVO)session.getAttribute("userVO");
if(vo == null) {//세션이 없는경우
res.sendRedirect("/MyWeb/user/loginn.jsp");
return; //컨트롤러를 실행하지 않는다.
}
//화면에서 넘어오는 writer
String writer = req.getParameter("writer"); //작성자
//세션에서 id를 확인
String id = vo.getId();
if(writer == null || !id.equals(writer)) {//작성자가 아닌경우
res.setContentType("text/html; charset=UTF-8;");//응답내용에 관한 설정
PrintWriter out = res.getWriter();
out.println("<script>");
out.println("alert('권한이 없습니다');");
out.println("location.href='/MyWeb/board/list.board';");
out.println("</script>");
return; //컨트롤러를 실행하지 않음
}
chain.doFilter(request, response);
}
}
===============================================
로그인을 하지않을경우(세션값이 없으면) 글 작성버튼 비활성화
board_list.jsp에서 수정
<c:if test="${sessionScope.userVO != null}">
<input type="button" value="글 작성" class="btn btn-default" onclick="location.href='write.board' ">
</c:if>
위 부분만 수정해주면된다
=================================================
깃허브란?
-깃(git)은 공통으로 관리는 프로그램 소스코드 관리하기 위한 플랫폼 입니다.
-GitHub를 통해 사람들이 어디서나 프로젝트를 함께 할 수 있습니다

버전별로 유 의미한 변화를 중심으로 백업해 주는 과정이 필요하다
=================================
깃(git) 다운로드
구글 검색 깃 - 깃 홈페이지 - 다운로드 탭 - Standalone Installer 윈도우 64비트 다운로드 - 다음버튼 연타 후 설치 종료
깃 실행
실행할 곳에서 마우스 오른쪽 클릭 - git bash here
===============================
깃 설치 후 최초 설정
사용자 정보 설정 Git은 커밋 할 때마다, 현재 운영체제에 설정 된 아래 정보를 사용한다.
혼자 사용하는 컴퓨터라면, 한번만 선언하면 되지만, 매번 다른 환경이라면 사용자 정보를 설정한다.


작업공간(폴더)
===========================
깃 명령문
모든 깃 명령어는 시작 되기 전에 해당 폴더안에서 버전관리를 시작해야 한다!
git init :깃 시작
git status :현재 깃의 상태
git add 파일명 :해당 파일을 staging area에 추가
git rm --cached 파일명 :해당 파일을 staging area에 삭제
git add . :파일을 전부다 추가
git commit –m “메시지” :깃을 레파지토리에 저장 파일의 수정이 일어난다면 add부터 다시 진행
git log :커밋 이후 변경 로그를 확인
git restore --staged "파일명" : 필요없는 파일을 추가했다면 되돌리기
여기 까지가 내 컴퓨터의 로컬저장소에 저장하는 명령어 이다
git commit –am “메시지” : 추가와 커밋 을 동시에 한다
깃을 원격저장소에 올리는 작업
git remote add origin 본인의깃계정 :원격저장소를 추가한다
git push origin master :원격저장소에 저장한다
'JSP' 카테고리의 다른 글
| jsp day14 (게시판 페이징) (0) | 2022.02.03 |
|---|---|
| jsp day13 (myweb 조회수증가(추가),실습(받은파일로 직접 사이트 작동시켜보기) (0) | 2022.01.28 |
| jsp day12 (MVC2를 이용한 웹생성(보드구현)) (0) | 2022.01.27 |
| jsp day11 (EL(내장객체태그),JSTL (JSP Standard Tag Library),코어와포맷,MVC2 패턴) (0) | 2022.01.27 |
| jsp day10 (MVC1 전체적인 컴포넌트 설계를 이용한 홈페이지 작업(로그인부터), 연결 풀,EL(Expression Language)) (0) | 2022.01.25 |