728x90

Spring에서 정의한 커스텀 태그 

 

기본적으로 el을 기초로 만들었기 때문에 el에서 할 수 있는 것은 대부분 할 수 있다. 

 

spel은 el은 못하는 생성자 호출을 하거나,  Spring Container에 등록된 bean 객체를 호출하여 사용할 수 있다는 장점이 있다.

 

<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>

태그 라이브러리를 import 한다. 

 

<s:eval expression="'KIM'.replace('K','N')"/>

s:eval 태그에 expression 속성에서 사용

 

문자열, 숫자, 논리형 리터럴을 사용할 수 있다.

문자열리터럴(SPEL):<s:eval expression="'KIM'.replace('K','N')"/> 

숫자리터럴(SPEL):<s:eval expression="12345+347834687"/>

논리리터럴(SPEL):<s:eval expression="true"/>

문자열에서는 String 의 메서드도 사용가능하고 

숫자는 연산도 처리한다.

 

request.setAttribute("price", 345345435);

request.setAttribute("user", new User("id", "password", "name"));

<s:eval expression="price"/> <!--345345435 출력-->

<s:eval expression="user.name"/><!--name 출력-->

변수, Bean 객체의 변수도 출력

 

<s:eval expression="${price}+3455"/> == <s:eval expression="price+3455"/>

el ${} 과 함께 사용할 수도 있다. 

 

<s:eval expression="new java.text.DecimalFormat('###,###.0').format(price)"/>

풀네임으로 생성자 호출도 가능하다

 

@Component("elBean")

public class SpringELBean {

private String member;

public SpringELBean() {

member="KIM";

}

 

public String printMembers() {

return member;

}

 

 

Component 어노테이션으로 elBean이라는 이름으로 Spring Container에 객체를 등록했다.

<s:eval expression="@elBean.member"/><br/>

<s:eval expression="@elBean.printMembers()"/><br/>

@componentName.memberField

 

bean 객체 앞에 @를 붙여주어야 한다.

 

 

'Java > Spring Boot' 카테고리의 다른 글

Spring Interceptor  (0) 2023.09.14
JSTL coreTag  (0) 2023.09.13
Spring Boot Controller Type of Parameters  (0) 2023.09.13
Spring Boot DataSource 설정  (0) 2023.09.13
Java WebAppInitConfig  (0) 2023.09.13
728x90

@Controller

public class 

 

@GetMapping("")

public String controllerParams(HttpServletRequest request,

HttpServletResponse response

, HttpSession session) {

 

}

HttpServletRequest: HTTP 요청 정보를 다루는 객체로, 클라이언트로부터 받은 요청에 대한 정보를 읽고 조작할 수 있습니다.

HttpServletResponse: HTTP 응답 정보를 다루는 객체로, 서버에서 클라이언트로 응답을 보낼 때 사용됩니다.

HttpSession: 클라이언트와 서버 간의 세션 관리를 위한 객체로, 세션 데이터를 저장하고 검색하는 데 사용됩니다

 

@GetMapping("")

public String controllerParams(WebRequest webRequest

, Locale locale

, InputStream is

, Reader reader

, OutputStream os

, Writer writer) {

locale.getCountry();

locale.getLanguage();

is.read();

}

WebRequest: Spring에서 제공하는 인터페이스로, HTTP 요청 및 응답을 다루는 데 사용됩니다.

Locale: 지역 및 언어 정보를 관리하는 객체로, 다국어 지원 기능에서 사용됩니다.

Reader, InputStream, OutputStream, Writer: 데이터의 입출력을 위한 스트림을 다루는 객체로, 파일 업로드 및 다른 I/O 작업에 사용됩니다.

 

@RequestMapping("")

public String controllerParams(@PathVariable("name") String name

, @RequestParam("name") String name1 

, @RequestParam(value="name", required=false, defaultValue="디폴트") String name2

, @RequestParam String name3 // 메서드 파라미터의 이름과 요청파라미터가 같다면 ("name") 생략가능

, String name4 // 메서드 파라미터의 이름과 요청파라미터가 같고 String, int등 단순한 타입의 경우 @RequestParam 생략가능

, @RequestParam Map<String, String> params) {

 

}

 

@PathVariable("name"): URL 경로 변수를 추출하기 위한 어노테이션으로, 경로에서 변수 값을 추출합니다.

(RequestMapping과 함께 사용됩니다.)

@RequestParam("name"): HTTP 요청 파라미터를 추출하기 위한 어노테이션으로, 요청 파라미터의 값을 추출합니다.

(name 파라메터가 없으면 400 오류 발생)

@RequestParam: 메서드 파라메터의 이름과 요청파라메터의 이름이 같다면 ("name")은 생략가능하다

(메서드 파라메터의 이름과 요청파라메터가 같고 String, int 등 단순한 타입의 경우 @RequestParam 생략 가능

@RequestParam(value="name", required=false, defaultValue="디폴트"): 요청 파라미터의 값을 추출하며, 필수 여부와 기본값을 설정할 수 있습니다.

@RequestParam Map<String, String>: 모든 요청 파라미터를 Map으로 수집합니다.

 

 

 

@GetMapping("")

public String controllerParams(@CookieValue("cookieName") String cookieName

, @CookieValue(value="cookieName", required=false, defaultValue="test") String cookieName1

, @RequestHeader("Host") String host // 값없으면 404 오류 발생

, @RequestHeader("Keep-Alive") long keepAlive) {

 

}

 

@CookieValue("cookieName"): 쿠키 값을 추출하기 위한 어노테이션으로, 쿠키의 값을 추출합니다.

(속성값이 없으면 404 오류 발생)

@CookieValue(value="cookieName", required=false, defaultValue="test"): 쿠키 값을 추출하며, 필수 여부와 기본값을 설정할 수 있습니다.

@RequestHeader(): HTTP 요청 헤더 값을 추출하기 위한 어노테이션으로, 헤더의 값을 추출합니다.

 

@GetMapping("")

public String controllerParams(ModelMap model

, Model model2

, Map map ) {

}

ModelMap, Model, Map: 뷰에 데이터를 전달하기 위한 모델 객체로, 뷰에서 사용할 데이터를 저장합니다.

 

@GetMapping("")

public String controllerParams(@ModelAttribute  User userModel

, @ModelAttribute("xxUser") User userModel2

, @ModelAttribute  User userModel3, BindingResult bindingResult

, @ModelAttribute  User userModel4, Errors errors) {

 

}

@ModelAttribute: 모델에 데이터를 바인딩하고 뷰에 전달하기 위한 어노테이션으로, 커맨드 객체를 생성하고 데이터를 바인딩합니다.

Errors, BindingResult: 데이터 바인딩 및 유효성 검사 결과를 저장하는 객체로, 데이터 바인딩 중 발생한 오류 정보를 관리합니다.

 

@GetMapping("")

public String controllerParams(SessionStatus sessionStatus) {

sessionStatus.setComplete();

sessionStatus.isComplete();

}

SessionStatus: 세션 상태를 관리하는 객체로, 세션을 완료하거나 초기화하는 데 사용됩니다.

 

@GetMapping("")

public String controllerParams(@RequestBody String body) {

 

}

 

@RequestBody: HTTP 요청 본문의 내용을 추출하기 위한 어노테이션으로, JSON 또는 XML과 같은 데이터를 읽어옵니다.

 

@GetMapping("")

public String controllerParams(@Value("#{commonprop['os.name']}") String osName ) {

 

}

 

@Value("#{commonprop['os.name']}") String osName: SpEL (Spring Expression Language)을 사용하여 프로퍼티 값을 주입하는 어노테이션으로, 외부 설정 파일에서 값을 가져올 때 사용됩니다.

 

'Java > Spring Boot' 카테고리의 다른 글

JSTL coreTag  (0) 2023.09.13
Spring CustomTag SPEL(Spring Expression Language)  (0) 2023.09.13
Spring Boot DataSource 설정  (0) 2023.09.13
Java WebAppInitConfig  (0) 2023.09.13
Spring Boot Request Controller  (0) 2023.09.13
728x90

@Config

ApplicationConfig

 

1. Spring의 Environment를 사용하여 속성 값에서 데이터베이스 연결 정보를 가져오는 방법

 

Environment는 application.properties 파일에서 값을 얻어온다.

@Autowired

Environment environment;

@Bean

public DataSource apacheDataSource() {

BasicDataSource dataSource=new BasicDataSource();

dataSource.setUrl(environment.getProperty("spring.datasource.url"));

dataSource.setUsername(environment.getProperty("spring.datasource.username"));

dataSource.setPassword(environment.getProperty("spring.datasource.password"));

return dataSource;

}

dataSource에 set url, username,password 를 할때,

environment에서 property를 가져온다. 

"spring.datasource.url"

 

2. 데이터베이스 연결 정보 하드코딩 

set 할때 DriverClassName을 포함하여 직접 연결정보를 입력해준다.

 

 

'Java > Spring Boot' 카테고리의 다른 글

Spring CustomTag SPEL(Spring Expression Language)  (0) 2023.09.13
Spring Boot Controller Type of Parameters  (0) 2023.09.13
Java WebAppInitConfig  (0) 2023.09.13
Spring Boot Request Controller  (0) 2023.09.13
Spring JSP 국제화  (0) 2023.09.13
728x90

자바클래스로 Spring 기본 설정할 때 사용된다.

 

-web.xml을 대신할 클래스로 톰캣 실행시 기본설정하는 역할을 한다.

 

WebAppInitConfig 클래스는 WebApplicationInitializer 인터페이스를 상속하여 

onStartup 메소드를 구현한다. 

 

onStartup 메소드는 톰캣 실행하자마자 실행되므로 설정의 역할을 하게 된다. 

이 메소드에서 dispatcherServlet도 등록하고 ApplicationConfig, Listener, WebConfig, encodingFilter도 설정할 수 있다. 

 

Spring에서 application.properties 파일로 설정을 하면 불필요한 액션인것 같다.

 

public class WebAppInitConf implements WebApplicationInitializer {

@Override

public void onStartup(ServletContext servletContext) throws ServletException {

/**********1.DispatcherServlet등록***************/

AnnotationConfigWebApplicationContext context =

new AnnotationConfigWebApplicationContext();

context.register(WebConfig.class);

ServletRegistration.Dynamic dynamic=

servletContext.addServlet("dispatcherSevlet", new DispatcherServlet(context));

dynamic.setLoadOnStartup(0);

dynamic.addMapping("/");

 

/********2.config 설정 클래스[ApplicationConfig.java,WebConfig.java]를사용한설정******/

//ApplicationConfig.java

AnnotationConfigWebApplicationContext applicationContext =

new AnnotationConfigWebApplicationContext();

applicationContext.register(ApplicationConfig.class);

//Listener등록

servletContext.addListener(new ContextLoaderListener(applicationContext));

//WebConfig.java

AnnotationConfigWebApplicationContext servletConfig = new AnnotationConfigWebApplicationContext();

servletConfig.register(WebConfig.class);

ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet", new DispatcherServlet(servletConfig));

dispatcherServlet.setLoadOnStartup(1);

dispatcherServlet.addMapping("/");

//encodingFilter설정

FilterRegistration.Dynamic filterRegistration = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter("UTF-8", true));

filterRegistration.addMappingForUrlPatterns(null, true, "/*");

}

}

'Java > Spring Boot' 카테고리의 다른 글

Spring Boot Controller Type of Parameters  (0) 2023.09.13
Spring Boot DataSource 설정  (0) 2023.09.13
Spring Boot Request Controller  (0) 2023.09.13
Spring JSP 국제화  (0) 2023.09.13
Spring Boot Controller Mapping + View Resolver  (0) 2023.09.12

+ Recent posts