○ 한글 입력
- General - ContextType - Text - java Properties File - UTF-8 - Update
[ src/main/webapp/jdbc.properties ]
# DataSource
# jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.DriverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Seoul
jdbc.username=awsuser
jdbc.password=123123
# 오라클인 경우
# 버전에 따라 @localhost:1521:XE에 SID가 XE, ORA, ORCL을 기술해야 한다.
# jdbc.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# jdbc.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:XE ORA ORCL
# jdbc.username=scott
# jdbc.password=tiger
[ src/main/webapp/WEB-INF/spring/root-context.xml ]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>/WEB-INF/config/jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource"> // Connection Pool 위함
<!--
<property name="dirverClass" value="com.mysql.cj.jdbc.Driver"></property>
-->
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- SqlSessionFactory는 DB와의 연결과 SQL의 실행에 대한 모든 것을 가진 객체 -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- <property name="configLocation" value="classpath:/mybatis-config.xml"></property> -->
<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
</bean>
<!-- SqlSession 객체 주입 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="SqlSessionFactory"></constructor-arg>
</bean>
</beans>
[ 페이지 이동 ]
○ JSP로 구현할 경우
<%
request.setAttribute("member", m);
pageContext.forward("userInfo.jsp");
%>
○ 서블릿으로 구현할 경우
doGet(...) {
...
request.setAttribute("member", m);
RequestDispatcher dispatcher = request.getRequestDispatcher("userInfo.jsp");
dispatcher.forward(request, response);
}
○ 스프링 프레임워크로 구현할 경우
@GetMapping("info")
public String getMemberInfo(int id, Model model) {
...
model.addAttribute("member", m);
return "userInfo"
}
○ URL rewriting
- HTTP의 Query String을 이용하는 방식
- URL에 파라미터를 추가해 서버로 요청하는 형식
- 정보 유지를 위해 파라미터를 매 페이지마다 확인하고 계속 추가해주어야 하며 복잡한 정보 유지 어려움
○ 쿠키
- 클라이언트에 저장되는 작은 정보 의미
- 서버의 요청에 의해 브라우저가 저장하게 되며 서버가 요청할 때 제공하는 형식
- 파일로 클라이언트의 컴퓨터에 저장되는 방식이며 보안상 문제 존재
- 광고, 기타 목적으로 사용자의 이용 행태 추적에 이용될 수 있으며, 이러한 목적의 경우 사용자 정보 활용 동의 필요
- 연속되는 페이지 이동에 대한 정보 저장보다는 재방문 등의 확인 용도로 많이 사용
- 'name=value' 형식, 유효기간, 요청 경로, 도메인 지정 등의 부가 속성 포함
- 주로 자바스크립트를 통해 처리
- HttpOnly 설정으로 서버에만 사용할 수 있도록 설정 가능
○ 세션
- 클라이언트가 웹 애플리케이션 서버에 접속할 때 서버 쪽에 생성되는 공간
- 내부적으로는 세션 아이디를 통해 참조됨
- 브라우저는 서버에 접속 할 때 발급받은 세션 아이디를 기억
- 서버는 해당 세션 아이디로 할당된 영역에 접근
- 사용자마다 생성되는 공간으로, 동시에 많은 사용자가 세션을 통해 대량의 데이터를 관리한다면 충분한 메모리 비롯 세션 관리 대책 필요
○ 로그인
- 클라인트가 로그인한다.
- 컨트롤러는 request.getParameter()를 통해 클라이너트의 id와 password 확인한다.
- 로그인 정보가 맞을 경우 사용자 이름이나 기타 정보를 세션에 저장한다.
- 메인 화면으로 리디렉트한다.
// 컨트롤러(Controller)
session.setAttribute("uname", "홍길동"); // 이름을 세션에 저장
response.sendRedirect("/main.jsp"); // 메인화면으로 리디렉션
// main.jsp
<h2> ${uname} </h2>
○ 게시판 목록
- 컨트롤러는 DB로부터 게시판의 첫 번째 페이지 데이터를 가지고 온다.
- request에 리스트 형태로 데이터 저장한다.
- 목록 화면으로 포워딩한다.
// 컨트롤러(Controller)
List<Member> mlist = dao.getMemberList();
request.setAttribute("mlist", mlist); // 리스트 형태로 데이터 저장
request.getRequestDispatcher("/mlist.jsp").forward(request, response);
[ 템플릿 데이터 ]
○ <%! %>
- 선언 태그
- JSP가 서블릿 코드로 변환할 때 _jspService() 메서드 안에 들어가게 되므로 JSP에서 일반 자바 코드와 달리
멤버 변수나 메서드 선언은 기본적으로 불가능
○ <%= %>
- 표현 태그
- 웹 브라우저를 통해 클라이언트에 전달될(HTML 응답에 포함될) 자바 표현식 포함
- out.println()의 인자로 적합한 모든 자바 코드 가능
- 사칙연산, 메서드 호출, 변숫값 출력 등에 사용
- EL로 대체 가능
○ <% %>
- 스크립트릿 태그
- 모든 자바 코드의 사용이 가능
- 단, _jspService() 메서드 내에 포함되는 것 고려해야함
- 서블릿 코드로 변환될 때 모든 HTML은 out.write() 형태로 변경됨
- HTML과 스크립트릿을 중간에 섞어 사용 가능
- MVC 패턴 적용과 JSTL + EL로 대체 가능
<%
String name = request.getParameter("uname");
%>
<h2> <%- uname %> </h2>
<hr>
<table>
<% for(Member m : mlist) { %>
<tr>
<td><%=m.name %> </td>
<td><%=m.email %> </td>
</tr>
<% } %>
</table>
'프로그래밍 언어 > JSP' 카테고리의 다른 글
JSP_22-11-11 (0) | 2022.11.11 |
---|---|
JSP_22-11-10 (0) | 2022.11.10 |
JSP_22-11-08 (0) | 2022.11.08 |
쇼핑몰 만들기(1) (0) | 2022.11.07 |