본문 바로가기

안녕하세요!

프로그래밍 언어/JSP

JSP_22-11-09

○ 한글 입력

    - 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>

 

728x90
반응형

'프로그래밍 언어 > 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

loading