JSP의 위치 

src/main/webapp/WEB-INF/jsp

 

기존 SpringBoot는 src/main/resources/teamplates에 타임리프가 들어가면 간단하게 조회된다.

 

그렇다면 JSP는 위치가 다른데 어떻게?

 

1. gradle, maven이면 디펜던시를 추가해야한다.

 

gradle의 경우

compile("javax.servlet:jstl")

compile("org.apache.tomcat.embed:tomcat-embed-jasper")

- 필요하다면 버전을 추가한다, 필자의 경우 springboot 플러그인으로 알아서 버전을 찾아준다.

 

maven의 경우

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

</dependency>

<dependency>

<groupId>org.apache.tomcat.embed</groupId>

<artifactId>tomcat-embed-jasper</artifactId>

</dependency>

- maven도 마찬가지로 버전이 필요하면 추가한다.

 

 

 

2. 자바 설정 혹은 application.properties에 경로를 지정한다.

@Configuration

public class SpringConfig extends WebMvcConfigurerAdapter {

@Bean

public ViewResolver getViewResolver() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

viewResolver.setPrefix("/WEB-INF/jsp/");

viewResolver.setSuffix(".jsp");

return viewResolver;

}

}

 

혹은

 

spring.mvc.view.prefix: /WEB-INF/jsp/

spring.mvc.view.suffix: .jsp

 

 

 

참고)

 

시작점 코드(com.mysample.root)

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

@SpringBootApplication에는 

@EnableAutoConfiguration

@ComponentScan이 포함되어 자동으로 하위  package 경로(com.mysample.root이하)는 자동으로 읽는다.

 

출처: https://seongtak-yoon.tistory.com/23 [테이키스토리]

Posted by 철냄비짱
,

Spring Annotation

JAVA 2019. 9. 30. 20:48

1. HttpServletRequest, HttpServletResponse


 

2. HttpSession


 

3. Local

 - java.util.Locale 지역 정보


 

4. InputStream, Reader

 - HttpServletRequest의 getInputStream(), Reader


 

5. OutputStream, Writer

 - HttpServletResponse의 getOutputStream(), Writer - 서블릿 형태로 만들때 사용한다.


 

6. @PathVariable

 - @RequestMapping의 URL {} 부분의 패스 변수를 받는다.

    만약 타입이 틀린 값이 들어오면 HTTP 400 - Bad Request 가 전달 된다.

?

1

2

@RequestMapping("/board/{id}")

public void view( @PathVariable("id") int id ) {...}

 


 

7. @RequestParam

 - 스프링 내장 변환기가 다룰 수 있는 모든 타입을 지원한다.

   해당 파라미터가 없다면 HTTP 400 - Bad Request 가 전달 된다.

 -  file의 경우는 <input type="file" name="file" /> 에 매핑 된다.

?

1

2

3

public String edit( @RequestParam("id") int id,

            @RequestParam("title") String title,

            @RequestParam("file") MultipartFile file ) {...}

 

 -  맵 형태로 받으면 모든 파라미터 이름은 맵의 키에 파라미터 값은 맵의 값에 담긴다. 

?

1

public String add( @RequestParam Map<String, String> params ) {...}


 

-  파라미터가 필수가 아니라면 required = false 로 지정하면 된다. 

   이때 파라미터가 없으면 NULL이 들어간다. default 값을 지정 할 수도 있다. 

?

1

2

3

public void view( @RequestParam(value = "id",

                        required = false,

                        defaultValue = "0" )  int id) {..}.

 


 

8. @CookieValue

 - @RequestParam과 동일 하며 쿠키값을 가져올 때 사용한다.

?

1

2

public String check( @CookieValue("check") String check,

                required = false, defaultValue = "" ) {...}

 


 

9. @RequestHeader

 - 헤더 정보를 메소드 파라미터에 넣어 준다. Ajax로 처리할때 $.ajax(...) 에서 head에 특정 값을 넣고 여기서 받아서 

   있으면 ajax이고 없으면 일반페이지라는 식으로 이용하면 된다.

?

1

public String header( @RrequestHeader("ajax") String ajax ) {...}

 


 

10. Map, Model, ModelMap

 - view를 String으로 리턴해 주고 Attribute를 Map, Model, ModelMap 에 담을 수 있다.

 

11. @ModelAttribute

 - 파라미터를 Object형태로 받을때 사용된다. 일반적인 파라미터 형태로 쓰인 경우 타입이 일치하지 않으면 객체에 매핑 되지 

   않으며 에러는 발생 시키지 않는다. 자동으로 ModelMap에 담기므로 modelMap.addAttribute를 해 줄 필요가 없다.

?

1

public void update( @ModelAttribute("board") Board board) {...}


 

 - 메소드에도 @ModelAttribute를 설정 할 수 있다. 리턴값이 항상 나머지 컨트롤러에 자동 추가 되며 보통 참조용 데이터 등에 

   이용된다.

?

1

2

@ModelAttribute("emailList")

public Map<String, String> getEmailList() { ... }

 


 

12. Errors, BindingResult

  - 모델의 값을 검정한다. 이때 BindingResult나 Errors의 파라미터 값의 위치는 반드시 @ModelAttribute 뒤에 위치해야 한다. 

     자신의 바로 앞에 있는 @ModelAttribute 파라미터의 검정 작업만 하기 때문이다.

?

1

2

@RequestMapping(value = "/board/add", method = RequestMethod.POST)

public String add( @ModelAttribute("board") Board board, BindingResult result ) {...}

 


 

13. SessionStatus

 - 모델 오브젝트를 세션에 저장하여 계속 사용한다. 더이상 모델 오브젝트를 사용하지 않을 때는 세션에서 제거해 줘야 한다.


 

14. @RequestBody

 - HTTP body 부분만 전달 한다. XML 이나 JSON 으로 출력 할 경우 사용한다.

   리턴타입의 @ResponseBody 를 참조하자.

 

15. @Value

 - 프로퍼티값이나 값을 파라미터에 적용한다.

?

1

2

3

4

5

6

7

8

9

public class BoardController {

    @Value("${eng.url}")

    String engUrl;

 

    @RequestMapping(..)

    public String gotoEng() {

        return this.engUrl;

    }

}

 

 - 위는 프로퍼티중 eng.url 의 값을 String engUrl에 매핑 시키고 메소드에서 사용한 케이스다. 파라미터에도 적용 된다.

?

1

2

3

public String gotoEng( @Value("${eng.url}") String engUrl ) {

    return engUrl;

}

 


 

16. @Valid

 - JSR - 303 검증기를 이용해서 @ModelAttribute를 검정하도록 한다.

?

1

public String add( @Valid @ModelAttribute("board") Board board, BindingResult result ) { ...}


 

Posted by 철냄비짱
,

로컬개발 후 서버 적용을 지키기 위해

데이터베이스 덤프와 밀어넣는 작업을 자주 한다.

 

MySQL Error 2006 : MySQL server has gone away

상기 에러는 대용량 작업이 패킷사이즈보다 커서 생기는 에러.

 

 

set GLOBAL max_allowed_packet = 1024 * 1024 * 64;
set SESSION max_allowed_packet = 1024 * 1024 * 64; 

 

 

Posted by 철냄비짱
,

1. my.cnf 파일 내용을 아래와 같이 수정한다.(Mysql, MariaDB 설정 파일)


명령어 : vi /etc/my.cnf [엔터]


[client]

default-character-set = utf8


[mysqld]

init_connect = SET collation_connection = utf8_general_ci

init_connect = SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci


[mysqldump]

default-character-set = utf8


[mysql]

default-character-set = utf8


2. 위 내용을 추가 한 후, my.cnf 파일을 저장 한다.

3. 내용을 추가 한 뒤, 설정한 내용을 적용 하기 위해 mysql을 재시작 한다.

   - 명령어 :  service mysqld restart 또는 /etc/init.d/mysql restart

                   (MariaDB도 Mysql 명령과 동일 함.)

4. DB에 접속 하여 정상적으로 적용 되었는지 확인 한다.

   - 명령어 :  mysql -u root -p [엔터]


> show variables like 'c%';

+--------------------------+-----------------------------------------+

| Variable_name            | Value                                   |

+--------------------------+-----------------------------------------+

| character_set_client     | utf8                                    |

| character_set_connection | utf8                                    |

| character_set_database   | utf8                                    |

| character_set_filesystem | binary                                  |

| character_set_results    | utf8                                    |

| character_set_server     | utf8                                    |

| character_set_system     | utf8                                    |

| character_sets_dir       | /usr/local/server/mysql/share/charsets/ |

| collation_connection     | utf8_general_ci                         |

| collation_database       | utf8_general_ci                         |

| collation_server         | utf8_general_ci                         |

| completion_type          | NO_CHAIN                                |

| concurrent_insert        | AUTO                                    |

| connect_timeout          | 10                                      |

+--------------------------+-----------------------------------------

Posted by 철냄비짱
,

Groupby

예약어가 무조건 전체 그룹으로 묶여야만 하는 설정 해제

 

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Posted by 철냄비짱
,

시작 프로그램 삭제

Windows 2019. 9. 30. 13:31

윈도우키 + R --> 실행창 띄우기

실행창에서 + msconfig --> 시스템 구성 유틸리티

 

시스템 구성 유틸리티를 실행한 후,

시작프로그램 확인.

 

윈도우 + R --> 실행창

regedit 실행

 

1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

3. HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg

4. 윈도우 > 모든 프로그램 > 시작프로그램 에 있는 경우

Posted by 철냄비짱
,