JSTL core는 기본적인 기능들을 구현해 놓은 라이브러리


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


출력 : <c:out>

조건 : <c:if>, <c:choose>, <c:when>, <c:otherwise>

반복 : <c:forEach>, <c:forTokens>

예외 : <c:catch>

변수 설정 및 삭제 : <c:set>, <c:remove>



<c:out> (출력시키는 태그)

<c:out value="출력값" default="기본값" excapeXml="true or false">


<c:if> 

<c:if test="조건" var="변수명" scope="범위">


<c:choose> (switch와 비슷한 역할을 함. 별다른 의미 없이 조건문의 시작을 알림)

<c:choose>
    <c:when test="조건"></c:when>
    <c:otherwise></c:otherwise>
</c:choose>


<c:forEach> (items 속성에 컬렉션이나 배열 형태의 객체를 지정하여 객체의 인덱스만큼 반복할 수도 있음)

<c:forEach items="객체명" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수">


<c:forTokens>

<c:forTokens items="객체명" delims="구분자" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수">


<c:catch>

<c:catch var="변수명">


<c:set> (지정된 변수에 값을 설정하는 태그)

<c:set var="변수명" value="설정값" target="객체" property="값" scope="범위">


<c:remove> 

<c:remove var="변수명" scope="범위">




JSTL fmt

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

인코딩 : <fmt:requestEncoding>

국제화 : <fmt:setLocale>, <fmt:timeZone>, <fmt:setTimeZone>, <fmt:bundle>, <fmt:setBundle>, <fmt:message>, <fmt:param>

형식화 : <fmt:formatNumber>, <fmt:parseNumber>, <fmt:formatDate>, <fmt:parseDate>



<fmt:requestEncoding> (Request 객체로부터 전달 받은 값들을 인코딩할때 사용)

<fmt:requestEncoding value="인코딩값">



<fmt:setLocale> (다국어 페이지를 사용할 때 언어를 지정하는 태그. value 속성은 어떤 언어를 사용할지, variant 속성은 브라우저의 스펙)

<fmt:setLocale value="값" variant="" scope="범위">


<fmt:setTimeZone> (지정한 지역 값으로 시간대를 맞추는 기능, <fmt:timeZone>의 경우 첫 태그와 끝 태그 사이의 영역만 적용. setTimeZone은 페이지 전체에 영량을 줌.

<fmt:setTimeZone value="값" var="변수명" scope="범위">



반응형

'JSP & Spring' 카테고리의 다른 글

jstl에서 비교문 [펌]  (0) 2016.09.20
스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01

jstl에서 비교문


Ex) eq (==)

1. <c:if test="${ null eq test_column }"> // null

2. <c:if test="${ 0 eq test_column }"> // 숫자

3. <c:if test="${ '0' eq test_column }"> // 문자

 

Ex) empty  

<c:if test="${ empty  test_columnMap }"> // list, map 객체 등

<c:if test="${ !empty  test_columnMap }"> // 비어 있지 않은 경우

 

Ex) ne (!=)

1. <c:if test="${ null ne test_column }"> // null

2. <c:if test="${ 0 ne test_column }"> // 숫자

3. <c:if test="${ '0' ne test_column }"> // 문자


출처 : http://cafe.naver.com/msjava/550

반응형

'JSP & Spring' 카테고리의 다른 글

JSTL 기본 사용  (0) 2016.10.31
스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01

<resources mapping="/picture/*" location="file:///C:/resource/pdf" />


servlet-context.xml 안에서 위와 같이 입력한다.


스프링에서 프로젝트 폴더가 아닌 외부 경로에 있는 폴더를 맵핑해서 쉽게 이미지를 가져올 수 있다.


이미지 경로를 /picture/ 로 잡았을 경우 C:/경로 아래로 찾게 되는 설정이다.



반응형

'JSP & Spring' 카테고리의 다른 글

JSTL 기본 사용  (0) 2016.10.31
jstl에서 비교문 [펌]  (0) 2016.09.20
@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01

클라이언트(jsp)에서 보내온 데이터를 컨트롤러에서 VO 나 변수로 담을 수 있는 어노테이션은 @ModelAttribute, @RequestParam이다.


@ModelAttribute은 여러개의 값을 VO로 한번에 담을 수 있다.


public String listPage(@ModelAttribute SearchCriteria cri) throws Exception{ System.out.println(cri.toString());

}

클라이언트에서 name = searchType 의 값을 subject, name = searchKeyword 의 값을 1111로 넘기고 해당 값이 들어가는 VO를 넣으면 알아서 값이 들어간다.

출력해보면  [searchType=subject, searchKeyword=1111] 와 같이 잘 나온다.



@RequestParam은 객체에 담지 않고 변수에 담는다.

public String modifyGET(@RequestParam("boardNum") int boardNum) throws Exception{ System.out.println(boardNum); }

boardNum의 값이 넘어온걸 int boardNum 에 담는다. 출력해보면 "257" 이 잘 나온다.



반응형

'JSP & Spring' 카테고리의 다른 글

jstl에서 비교문 [펌]  (0) 2016.09.20
스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01
파일 업로드와 UUID  (0) 2016.07.30


        pom.xml에서 자바 버전 수정.

<properties> <java-version>1.8</java-version> <org.springframework-version>4.1.7.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version>

</properties>


        properties 에서 project facets에서 버전 수정.






        pom.xml의 추가 라이브러리

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency>

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency>

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency>

<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency>

<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency>

<dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4</artifactId> <version>1.16</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>

<!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>


        src/main/resources 폴더 안에 

        log4jdbc.log4j2.properties 파일과 logback.xml, mybatis-config.xml 파일을 추가한다.


log4jdbc.log4j2.properties 안에 소스코드

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator



logback.xml 안에 소스코드

<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <!-- log4jdbc-log4j2 --> <logger name="jdbc.sqlonly" level="DEBUG"/> <logger name="jdbc.sqltiming" level="INFO"/> <logger name="jdbc.audit" level="WARN"/> <logger name="jdbc.resultset" level="ERROR"/> <logger name="jdbc.resultsettable" level="ERROR"/> <logger name="jdbc.connection" level="INFO"/> </configuration>

mybatis-config.xml 안에 소스코드

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
  <configuration>
  
  </configuration>

root-context.xml


1. 네임스페이스 추가.

beans, context, mybatis-spring 총 3가지 체크 확인.


2. SessionFactory, SqlSessionTemplate 추가.

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
		<property name="url" value="jdbc:log4jdbc:mysql://127.0.0.1:3306/web"></property>
		<property name="username" value="bill"></property>
		<property name="password" value="bill"></property>
	</bean>
	
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:/mybatis-config.xml" />
		<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" />
	</bean>
	
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
	</bean> 
	
	<context:component-scan base-package="com.web.service"></context:component-scan>	
	<context:component-scan base-package="com.web.dao"></context:component-scan>
</beans>

service 와 dao에 component-scan 확인할 것!


컨트롤러는  servlet-context.xml에 추가할것

<context:component-scan base-package="com.web.controller" />


반응형

'JSP & Spring' 카테고리의 다른 글

스프링 외부 경로 폴더 지정하기  (0) 2016.09.12
@ModelAttribute, @RequestParam  (0) 2016.09.08
utf-8 인코딩.  (0) 2016.09.01
파일 업로드와 UUID  (0) 2016.07.30
페이징 처리하기 Pagination  (0) 2016.05.09

web.xml에 추가.


<filter>

       <filter-name>encodingFilter</filter-name>

       <filter-class>

           org.springframework.web.filter.CharacterEncodingFilter

   </filter-class>

   <init-param>

           <param-name>encoding</param-name>

           <param-value>UTF-8</param-value>

       </init-param>

</filter>

<filter-mapping>

       <filter-name>encodingFilter</filter-name>

       <url-pattern>/*</url-pattern>

</filter-mapping>




jsp에서 한글 인코딩


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>



반응형

'JSP & Spring' 카테고리의 다른 글

@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
파일 업로드와 UUID  (0) 2016.07.30
페이징 처리하기 Pagination  (0) 2016.05.09
redirect 문법  (0) 2016.03.31

@RequestMapping(value="/uploadForm", method=RequestMethod.POST) public String uploadForm(MultipartFile file, Model model) throws Exception{ logger.info("originalName : " + file.getOriginalFilename()); logger.info("size : " + file.getSize()); logger.info("contentType : " + file.getContentType()); String savedName = uploadFile(file.getOriginalFilename(), file.getBytes()); model.addAttribute("saveName", savedName); return "uploadResult"; } private String uploadFile(String originalName, byte[] fileDate) throws Exception{ UUID uid = UUID.randomUUID(); String savedName = uid.toString() + "_" + originalName; File target = new File(uploadPath, savedName); FileCopyUtils.copy(fileDate, target); return savedName; }


파일 이름이 중복될 경우 문제가 발생하기 때문에 고유값을 가진 파일이름으로 저장해야 된다.

uploadFile이라는 함수를 만들어서 UUID.randomUUID()을 이용하여 고유값을 가진 값 + 파일명으로 새로운 파일명을 만들고 업로드 함수로 리턴한다.


(출처 : 코드로 배우는 스프링 웹프로그래밍)

반응형

'JSP & Spring' 카테고리의 다른 글

@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01
페이징 처리하기 Pagination  (0) 2016.05.09
redirect 문법  (0) 2016.03.31

endPage 


endPage = (int) (Math.ceil(현재 페이지() / (double)페이지 번호의 수) * displayPageNum);

endPage는 현재의 페이지 번호를 기준으로 계산함.


현재 페이지가 3일 경우 : Math.ceil(5/10) * 10 = 10

현재 페이지가 1일 경우 : Math.ceil(1/10) * 10 = 10

현재 페이지가 20일 경우 : Math.ceil(20/10) * 10 = 20

현재 페이지가 21일 경우 : Math.ceil(21/10) * 10 = 30




startPage


endPage가 20이라면 startPage는 11이 됨. 

startPage = (endPage - 페이지 번호의 수 ) + 1;


100개의 데이터(totalCount)를 10개씩 보여준다면 endPage는 10. 20개씩 보여줘야 하는 경우 endPage는 5가 된다.


int tempEndPage = (int)(Math.ceil(totalCount / (double)cri.getPerPageNum());


if(endPage > tempEndPage){

endPage = tempEndPage;

}




Prev and Next


prev = startPage == 1 ? false : true;


next = endPage * cri.getPerPageNum() >= totalCount ? false : true;





- 코드로 배우는 스프링 웹 프로젝트 - 

반응형

'JSP & Spring' 카테고리의 다른 글

@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01
파일 업로드와 UUID  (0) 2016.07.30
redirect 문법  (0) 2016.03.31

다음과 같이 상대 경로로 리다이렉트 사용할 수 있음.

@Controller

public class RedirectController {


@RequestMapping("/studentConfirm")

public String studentRedirect(HttpServletRequest httpServletRequest, Model model){

String id = httpServletRequest.getParameter("id");

if(id.equals("abc")) {

return "redirect:studentOk";

}


return "redirect:studentNg";



}


절대 경로로도 리다이렉트를 사용할 수 있음.



@RequestMapping("/studentURL1")

public String studentURL1(Model model) {

return "redirect:http://localhost:8181/spring_14_3_ex1_srpingex/studentURL1.jsp";

}

반응형

'JSP & Spring' 카테고리의 다른 글

@ModelAttribute, @RequestParam  (0) 2016.09.08
스프링 초기환경세팅  (0) 2016.09.04
utf-8 인코딩.  (0) 2016.09.01
파일 업로드와 UUID  (0) 2016.07.30
페이징 처리하기 Pagination  (0) 2016.05.09

+ Recent posts