👀 배우진 않지만..너무 많은게 있다.. 공부하시길..
SPRING
AOP ( 관점지향 프로그래밍(AOP) vs 객체지향 프로그래밍(OOP) )
Batch
initializr
..
이런 것들이 있다
👀 게시판 제작시 주의
모든 게시판의 리스트, 상세보기 => 무조건 GET으로 처리
모든 게시판의 글쓰기 => 무조건 POST
👀 [Servlet과 Spring의 차이점 ] 👀
- Spring과 Servlet 모두 Class 사용하지만
Servlet : Module은 class를 쓰지만 Controller는 servlet을 사용함 - parameter값 받는 방식 차이 (Get이든 Post든)
- Spring : HttpServletRequest req or 인자값 or DAO 으로 받을 수 있음
- Servlet : HttpServletRequest 얘 말고는 방법이 없음 - Database 연결구조
- Spring : class,xml(bean),properties로 연결 가능
- Servlet : class,properties로 연결 가능 - MVC형태
- Spring : Integer,int,long..... 등 숫자 관련된 메소드 외에 모두 사용 가능
- Servlet : doPost,doGet,doService ...등 servlet에서 정해진 메소드만 사용 가능 (활용성 ↓) - 라이브러리
- Spring : pop.xml 전레 로드하여 라이브러리 활용
- Servlet : 직접 프로젝트에 라이브러리를 다운받아 -> jump -> load해서 사용해야함 - View 형태
- Spring : JSP, JTSL 도 사용 가능
- Servlet : JSP만 사용 가능
👀 [ Spring => Maven , Legacy ]
- Maven : 개발자가 모든 라이브러리부터~ 모든 XML 직접 구성
- Legacy : 기본적인 Controller ~ View 미리 셋팅
단, 그 외 DB,DAO,bean,Properties 직접 추가 구성해야함
=> 회사에선 둘중에 쓰는게 정해져있음 거의
👀 spring legacy - js,css파일 로드 경로 지정
webapp/WEB_INF/spring/appServlet/servlet-context.xml 의
<resources mapping="/resources/**" location="/resources/" />
이 부분때문에 js파일 로드가 불가능하다! 404뜸 => 보안때문
js파일 webapp/resource 폴더에 넣거나
<resources mapping="/js/**" location="/js/" />
<resources mapping="/css/**" location="/css/" />
<resources mapping="/upload/**" location="/upload/" />
<!-- 요렇게 확장자 지정도 가능 -->
<resources mapping="/css/*.css" location="/css/" />
폴더 지정 태그 추가 해주고 해당 폴더에 넣으면 됨 (image 폴더 등.. )
=> resources 태그 :
특정 디렉토리를 설정하여 각종 속성파일을 로드 할 수 있도록 설정하는 보안 태그
👀 예외처리 전용 어노테이션
@Controller 에 사용
예외처리 전용 어노테이션이며,
해당 Exception class를 이용하여 특정 페이지로 이동 또는 특정 페이지 view 출력
@ExceptionHandler(MissingServletRequestParameterException.class)
public void han(MissingServletRequestParameterException ex, HttpServletResponse res) throws Exception{
res.setContentType("text/html;charset=utf-8");
this.pw = res.getWriter();
this.pw.print("<script>"
+ "alert('올바른 접근 방법이 아닙니다---');"
+ "location.href='./gallery.do'"
+ "</script>");
}
단, @RequestParam(required = true) 필수값 핸들링이 되지 않아서 완전히 예외로 빠져버릴때 실행됨!
🔽 요것처럼
@GetMapping("/gallery_delete.do")
public void gallery_delete(
@RequestParam(required = true) Integer gidx,
HttpServletResponse res
) throws Exception{
try {
System.out.println(gidx);
}catch(Exception e){
}
}
👀 JSTL
JSTL은 단독으로 사용하는 경우는 없음 => do에서 호출받아서 사용 多 (Model, ModelandView)
- 자주 사용하는 JSTL 엔진
<!-- jstl 엔진 -->
<%@ taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- jstl 각종함수 -->
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!-- jstl database 관련 -->
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<!--
fmt : format-type
=> 문자 포맷 변환 라이브러리 ex)금액에 ,찍을때만 거의 사용
-->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
=> fmt 예제 여기있음 https://dev-eunse.tistory.com/220
👀 JSTL + database 연결
방식 1
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:setDataSource
var="db"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/cms"
user="hana"
password="hana1234" />
<!-- 요렇게도 쓰고 -->
<!-- <sql:query var="ps" sql="select * from coupon" dataSource="${db}" /> --!>
<!-- 요렇게도 쓰는데 이걸 더 추천 -->
<cr:set var="table" value="coupon"/>
<cr:set var="order" value="order by cidx desc"/>
<sql:query var="ps" dataSource="${db}">
select * from ${table} ${order}
</sql:query>
<!-- 예시 -->
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>쿠폰명</th>
<th>할인율</th>
<th>사용가능 여부</th>
<th>사용기한</th>
<th>제작일</th>
</tr>
</thead>
<tbody>
<cr:forEach var="row" items="${ps.rows}">
<cr:set var="cpname_length" value="${fn:length(row['cpname'])}" />
<tr>
<!-- 범위 글자수 이상이 되었을 경우 말줄임표가 나오도록 하는 부분 -->
<cr:if test="${cpname_length>5}">
<cr:set var="jum" value="dfsdf..."/>
</cr:if>
<td>${fn:substring(row['cpname'],0,10)}${jum}</td>
<td>${row['cprate']}%</td>
<td>${row['cpuse']}</td>
<td>${row['cpdate']}</td>
<td>${fn:substring(row['indate'],0,10)}</td>
</tr>
</cr:forEach>
</tbody>
</table>
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#7-2 / mybatis(ibatis)를 이용 DAO + config,mapper,xml DB연결 (1) | 2024.07.22 |
---|---|
#7-1 / Mybatis 설치 및 Setting (0) | 2024.07.19 |
#6-9 / PathVariable(- API 서버 제작시 사용) (0) | 2024.07.15 |
#6-8 / Ajax 동기화 및 비동기화 차이점 (0) | 2024.07.15 |
#6-7 / JSTL - SPA 검색 기능 사용법 (0) | 2024.07.15 |