리다이렉트(redirect) 리다이렉트란 컨트롤러에서 뷰를 분기하는 방법으로 사용자가 요청한 URL이 아닌 다른 URL을 넘겨주는 것이다. 예를 들어, 회원정보수정 페이지로 접근했을 때 로그인이 되어있지 않다면 사용자를 회원정보수정페이지가 아닌 로그인 페이지로 이동(리다이렉트)시켜야한다. Controller에 Redirect 구현 @RequestMapping(value = "/member/modifyForm") public String modifyForm(Model model, HttpServletRequest request) { HttpSession session = request.getSession(); Member member = (Member) session.getAttribute("member"..
HTTP 클라이언트와 서버가 통신 할 때 이용하는 프로토콜인 HTTP는 비상태 프로토콜(stateless Protocol)이다. 즉, 클라이언트-서버 간의 요청-응답이 이루어졌을 때, 서버는 클라이언트에 관한 어떠한 상태정보도 저장하지 않는다. 이러한 특징은 서버가 클라이언트와의 연결을 유지하는데 소모되는 자원낭비를 줄일 수 있지만, 로그인 상태 유지, 장바구니와 같이, 연결정보를 유지해야 하는 기능을 구현하는데 어려움이 있다. 이를 해결하기 위한 두 가지 방법으로 세션과 쿠키가 있다. 세션은 서버에서 사용자 정보를 관리하는 반면, 쿠키는 클라이언트가 사용자 정보를 관리한다. 쿠키를 이용하면 서버의 부하를 줄일 수 있지만, 보안적인 측면에서 취약할 수 있기 때문에 주로 장바구니, 팝업 보지않음과 같은 민..
@ModelAttribute Controller에서 커맨드객체를 활용했을 때 view에서 객체명.변수명 형식을 이용해 값을 가져올 수 있다. 이 때 @ModelAttribute 어노테이션을 활용해 view에서 활용할 객체명을 변경할 수 있다. Controller // 변경 전 public String memJoin(Member member) // 변경 후 public String memJoin(@ModelAttribute("mem") Member member) memJoinOk.jsp memJoinOk ID : ${mem.memId} PW : ${mem.memPw} Mail : ${mem.memMail} Phone : ${mem.memPhone1} ${mem.memPhone2} ${mem.memPhone..
화면으로 부터 사용자가 입력한 정보를 Controller가 넘겨받을 때 보통 HttpServletRequest 객체를 이용하거나 @RequestParam어노테이션을 이용한다. 이후 model 객체를 활용해 view단으로 데이터를 전송해 사용자에게 보여진다. model 객체와 HttpServletRequest 객체를 활용해 입력한 정보를 받고 해당 정보를 view로 보내는 과정을 진행해보고, 그로인해 발생할 수 있는 단점(단순반복코드)을 스프링에서 제공하는 커맨드 객체를 이용해 보완해보겠다. 커맨드 객체 HttpServletRequest를 통해 들어온 RequestParameter들을 setter를 이용해 객체에 정의되어있는 변수에 값이 바인딩 되는 객체를 의미한다. 커맨드 객체를 활용하기 위해선 Http..
모델1 웹 프로그래밍 구축 방법 중 Model 1 방식을 이용하게 되면 브라우저(사용자)로 부터 받은 요청을 하나의 파일에서 모두 처리하게 되는데, JSP, service, dao 등 여러 기능이 하나의 파일에 담기게 되면 큰 프로젝트의 경우 구축이후 유지보수 측면에서 어려움을 겪는다. 모델2 이러한 단점을 보완하기 위해 나온 방식이 Model 2 방식이다. Model 1방식과 달리 각각의 기능을 모듈화 하였으며 MVC 패턴을 웹 개발에 도입한 구조이다. 각각 모듈의 기능을 간단히 정리하면 다음과 같다. Controller : 사용자 요청(URL, 매개변수)를 이용해 Service객체를 호출 및 DB로 부터 받은 Model을 View로 넘겨준다. Service : POJO(순수자바)객체로 구성되며 비즈니..
지금까지 스프링컨테이너와 Bean객체를 생성할 때 xml 파일을 생성한 뒤 Bean태그를 이용했다. xml 파일을 설정하지 않고도, 어노테이션을 활용해 Java파일에서 스프링컨테이너를 생성하는 과정을 알아본다. xml에서 Java클래스 변환을 알아보면서 다음과 같은 주제를 다룬다. xml > Java로 변환 DB 모델의 property List와 Map 타입의 변수 스프링컨테이너 생성 ■ 스프링 설정파일.xml > Java로 변환 MemberConfig.java @Configuration public class MemberConfig { } xml파일 대신 컨테이너로 사용할 Java 클래스에 @Configuration 어노테이션을 선언해줌으로, MemberConfig 클래스는 스프링설정파일로써, 스프링 ..
Bean객체를 이용하기 위해선 스프링 컨테이너를 생성해준 뒤 getBean을 통해 객체를 가져오는 과정을 거쳐야한다. 이 때 컨테이너와 Bean이 생성되는 시점과 소멸되는 시점에 특정한 작업을 필요한 경우 생명주기를 알아야한다. 컨테이너 생성 = Bean객체 생성 GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:appCtx.xml"); ctx.close(); 스프링 컨테이너가 초기화되면 xml상에 작성된 Bean 객체 또한 같이 생성된다. 이후 ctx.close()를 이용해 스프링 컨테이너를 메모리에서 해제하게 되면 생성된 Bean 객체 또한 같이 해제되므로, Bean객체의 생성과 소멸시점은 스프링컨테이너와 동일..
의존성 주입을 위해 사용되는 어노테이션은 @Autowired, @Resource, @Inject 가 있는데 이 중 비슷한 @Autowired와 @Inject를 비교해보자. @Autowired vs @Inject @Autowired private InjectionBean injectionBean; @Inject private InjectionBean injectionBean; 두 어노테이션 모두 컨테이너상에서 데이터 타입이 같은 Bean을 찾아 의존성을 주입해주는 방식으로 주입 방식과 역할은 동일하며 2가지 차이점을 제외하면 이 둘은 거의 동일하다고 볼 수 있다. 차이점 1. 스프링 컨테이너에 Bean 객체가 존재하지 않을 경우 예외처리 방식 이럴 경우는 거의 없겠지만, 프로그래머가 컨테이너에 Bean을 ..
- Total
- Today
- Yesterday
- 국비교육
- 이클립스
- CSS
- 데이터베이스
- CS
- 부트스트랩
- JSP
- 개발용어
- 스프링
- Thymeleaf
- C
- 넥사크로
- JVM
- 백준
- 스프링부트
- 네트워크
- SQL
- 오라클
- 오류
- HeidiSQL
- 인턴
- C++
- svn
- Open API
- 환경설정
- 프로그래머스
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |