'Spring'에 해당되는 글 33건
- 2020.04.17 :: 스프링(Spring) Controller 객체 구현 2
- 2020.04.17 :: 스프링(Spring) Controller 객체 구현 1
- 2020.04.16 :: 스프링(Spring) Service & DAO 객체 구현
- 2020.04.16 :: 스프링(Spring) 한글 처리
- 2020.04.16 :: 스프링(Spring) MVC 웹 서비스
- 2020.04.15 :: 스프링(Spring) The specified JRE installation does not exist 에러
- 2020.04.15 :: 스프링(Spring) STS를 이용한 웹 프로젝트 생성
- 2020.04.14 :: 이클립스(Eclipse)에 STS(Spring Tool Suite) 설치
- 2020.04.14 :: 스프링(Spring) 웹 프로그래밍 설계 모델
- 2020.04.13 :: 스프링(Spring) Java 파일 분리
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
@ModelAttribute
@ModelAttirbute를 이용하면 커멘드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때사용된다.
MemberController.java
@RequestMapping(value = "/memRemove", method = RequestMethod.POST)
public String memRemove(@ModelAttribute("mem") Member member) {
service.memberRemove(member);
return "memRemoveOk";
}
|
cs |
memRemoveOk.jsp
ID : ${mem.memId}<br />
|
cs |
커맨드 객체 프로퍼티 데이터 타입
memJoin.html
<form action="/lec19/member/memJoin" method="post">
ID : <input type="text" name="memId" ><br />
PW : <input type="password" name="memPw" ><br />
MAIL : <input type="text" name="memMail" ><br />
PHONE1 : <input type="text" name="memPhones[0].memPhone1" size="5"> -
<input type="text" name="memPhones[0].memPhone2" size="5"> -
<input type="text" name="memPhones[0].memPhone3" size="5"><br />
PHONE2 : <input type="text" name="memPhones[1].memPhone1" size="5"> -
<input type="text" name="memPhones[1].memPhone2" size="5"> -
<input type="text" name="memPhones[1].memPhone3" size="5"><br />
<input type="submit" value="Join" >
<input type="reset" value="Cancel" >
</form>
|
cs |
Member.java
public class Member {
private String memId;
private String memPw;
private String memMail;
private List<MemPhone> memPhones;
public String getMemId() {
return memId;
}
public void setMemId(String memId) {
this.memId = memId;
}
public String getMemPw() {
return memPw;
}
public void setMemPw(String memPw) {
this.memPw = memPw;
}
public String getMemMail() {
return memMail;
}
public void setMemMail(String memMail) {
this.memMail = memMail;
}
public List<MemPhone> getMemPhones() {
return memPhones;
}
public void setMemPhones(List<MemPhone> memPhones) {
this.memPhones = memPhones;
}
}
|
cs |
Model & ModelAndView
Controller에서 View에 데이터를 전달하기 위해 사용되는 객체로 Model과 ModelAndView가 있다. Model은 뷰에 데이터만을 전달하기 위한 객체이고, ModelAndView는 데이터와 뷰의 이름을 함께 전달하는 객체이다.
@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public String memModify(Model model, Member member) {
Member[] members = service.memberModify(member);
model.addAttribute("memBef", members[0]);
model.addAttribute("memAft", members[1]);
return "memModifyOk";
}
|
cs |
@RequestMapping(value = "/memModify", method = RequestMethod.POST) public ModelAndView memModify(Member member) { Member[] members = service.memberModify(member);
ModelAndView mav = new ModelAndView(); mav.addObject("memBef", members[0]); mav.addObject("memAft", members[1]);
mav.setViewName("memModifyOk");
return mav; } |
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 리다이렉트(Redirect), 인터셉트(Intercept) (0) | 2020.04.18 |
---|---|
스프링(Spring) 세션(Session), 쿠키(Cookie) (0) | 2020.04.18 |
스프링(Spring) Controller 객체 구현 1 (0) | 2020.04.17 |
스프링(Spring) Service & DAO 객체 구현 (0) | 2020.04.16 |
스프링(Spring) 한글 처리 (0) | 2020.04.16 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
@RequestMapping을 이용한 URL 매핑
@RequestMapping 어노테이션은 http request로 들어오는 URL을 특정 Controller 클래스나 메소드로 연결시켜주는 역할을 한다.
@RequestMapping(value="/memJoin", method=RequestMethod.GET)과 같이 value와 method 속성을 사용할 수 있는데, method의 Default 값은 GET이므로 method를 명시하지 않으면 자동으로 GET 요청을 처리한다. method 없이 value만 사용할 경우 이름을 생략하여 @RequestMapping("memJoin")과 같이 사용 가능하다.
메소드에 @RequestMapping 적용
public class MemberController {
@Resource(name="memService")
MemberService service;
@RequestMapping(value="/member/memLogin", method=RequestMethod.POST)
public String memLogin(Model model, HttpServletRequest request) {
String memId = request.getParameter("memId");
String memPw = request.getParameter("memPw");
model.addAttribute("memId", memId);
model.addAttribute("memPw", memPw);
return "memLoginOk";
}
}
|
cs |
클래스에 @RequestMapping 적용
@RequestMapping("/member")
public class MemberController {
@Resource(name="memService")
MemberService service;
@RequestMapping(value="/memLogin", method=RequestMethod.POST)
public String memLogin(Model model, HttpServletRequest request) {
String memId = request.getParameter("memId");
String memPw = request.getParameter("memPw");
model.addAttribute("memId", memId);
model.addAttribute("memPw", memPw);
return "memLoginOk";
}
}
|
cs |
요청 파라미터
HttpServletRequest 객체를 이용한 HTTP 전송 정보 얻기
login.html
ID : <input type="text" name="memId" ><br />
PW : <input type="password" name="memPw" ><br />
|
cs |
MemberController.java
@RequestMapping("/member")
public class MemberController {
@Resource(name="memService")
MemberService service;
@RequestMapping(value="/memLogin", method=RequestMethod.POST)
public String memLogin(Model model, HttpServletRequest request) {
String memId = request.getParameter("memId");
String memPw = request.getParameter("memPw");
model.addAttribute("memId", memId);
model.addAttribute("memPw", memPw);
return "memLoginOk";
}
}
|
cs |
@RequestParam 어노테이션을 이용한 HTTP 전송 정보 얻기
login.html
ID : <input type="text" name="memId" ><br />
PW : <input type="password" name="memPw" ><br />
|
cs |
MemberController.java
@RequestMapping(value="/memLogin", method=RequestMethod.POST)
public String memLogin(Model model, @RequestParam("memId") String memId, @RequestParam("memPw") String memPw) {
Member member = service.memberSearch(memId, memPw);
model.addAttribute("memId", member.getMemId());
model.addAttribute("memPw", member.getMemPw());
return "memLoginOk";
}
|
cs |
커멘드 객체를 이용한 HTTP 전송 정보 얻기
memJoin.html
<form action="/lec18/member/memJoin" method="post">
ID : <input type="text" name="memId" ><br />
PW : <input type="password" name="memPw" ><br />
MAIL : <input type="text" name="memMail" ><br />
PHONE : <input type="text" name="memPhone.memPhone1" size="5"> -
<input type="text" name="memPhone.memPhone2" size="5"> -
<input type="text" name="memPhone.memPhone3" size="5"><br />
AGE : <input type="text" name="memAge" size="4"><br />
<input type="submit" value="Join" >
<input type="reset" value="Cancel" >
</form>
|
cs |
Member.java
public class Member {
private String memId;
private String memPw;
private String memMail;
private MemPhone memPhone;
public String getMemId() {
return memId;
}
public void setMemId(String memId) {
this.memId = memId;
}
public String getMemPw() {
return memPw;
}
public void setMemPw(String memPw) {
this.memPw = memPw;
}
public String getMemMail() {
return memMail;
}
public void setMemMail(String memMail) {
this.memMail = memMail;
}
public MemPhone getMemPhone() {
return memPhone;
}
public void setMemPhone(MemPhone memPhone) {
this.memPhone = memPhone;
}
}
|
cs |
MemberController.java
@RequestMapping(value="/memJoin", method=RequestMethod.POST)
public String memJoin(Member member) {
service.memberRegister(member);
return "memJoinOk";
}
|
cs |
memberJoinOk.jsp
ID : ${member.memId}<br /> PW : ${member.memPw}<br /> Mail : ${member.memMail} <br /> Phone : ${member.memPhone.memPhone1} - ${member.memPhone.memPhone2} - ${member.memPhone.memPhone3}<br />
|
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 세션(Session), 쿠키(Cookie) (0) | 2020.04.18 |
---|---|
스프링(Spring) Controller 객체 구현 2 (0) | 2020.04.17 |
스프링(Spring) Service & DAO 객체 구현 (0) | 2020.04.16 |
스프링(Spring) 한글 처리 (0) | 2020.04.16 |
스프링(Spring) MVC 웹 서비스 (0) | 2020.04.16 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
Service 객체 구현
@Service, @Component @Resource, @Repository 어노테이션을 이용하여 Service 객체 생성 및 자동주입이 가능하다. 어노테이션 뒤에 괄호로 이름을 넣어주기도 하는데, 이름을 빼고도 사용할 수 있다.
MemberController.java
@Controller
public class MemberController {
@Resource(name="memService")
MemberService service;
}
|
cs |
MemberService.java
//@Service
//@Service("memService")
//@Component
//@Component("memService")
//@Repository
@Repository("memService")
public class MemberService implements IMemberService {
@Autowired
MemberDao dao;
}
|
cs |
DAO 객체 구현
Service 객체와 마찬가지로 어노테이션을 이용하여 DAO 객체 생성 및 자동주입이 가능하다.
MemberController.java
@Controller
public class MemberController {
@Resource
MemberService service;
}
|
cs |
MemberDao.java
@Repository
public class MemberDao implements IMemberDao {
private HashMap<String, Member> dbMap;
public MemberDao() {
dbMap = new HashMap<String, Member>();
}
}
|
'Spring > Study' 카테고리의 다른 글
스프링(Spring) Controller 객체 구현 2 (0) | 2020.04.17 |
---|---|
스프링(Spring) Controller 객체 구현 1 (0) | 2020.04.17 |
스프링(Spring) 한글 처리 (0) | 2020.04.16 |
스프링(Spring) MVC 웹 서비스 (0) | 2020.04.16 |
스프링(Spring) STS를 이용한 웹 프로젝트 생성 (0) | 2020.04.15 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
스프링(Spring)에서 한글의 깨짐을 방지하기 위해 UTF-8 형식으로 인코딩을 해주어야 한다. 웹 설정파일에서 <filter> 태그를 통해 인코딩이 가능하다.
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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|
cs |
실행 결과
'Spring > Study' 카테고리의 다른 글
스프링(Spring) Controller 객체 구현 1 (0) | 2020.04.17 |
---|---|
스프링(Spring) Service & DAO 객체 구현 (0) | 2020.04.16 |
스프링(Spring) MVC 웹 서비스 (0) | 2020.04.16 |
스프링(Spring) STS를 이용한 웹 프로젝트 생성 (0) | 2020.04.15 |
스프링(Spring) 웹 프로그래밍 설계 모델 (0) | 2020.04.14 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
프로젝트 전체 구조
1. java : 웹 애플리케이션에서 사용되는 Controller, Service, DAO 객체들의 java 파일의 위치
2. webapp : 스프링 설정파일, JSP, HTML 등 웹과 관련된 파일의 위치
3. resources : JSP 파일을 제외한 html, css, js 파일 등의 위치
4. spring : 스프링 설정파일의 위치
5. views : JSP 파일의 위치
6. xeb.xml : 웹 설정파일
7. pom.xml : Maven 설정 파일
web.xml
웹 애플리케이션에 최초 사용자의 요청이 발생하면 가장 먼저 DispatcherServlet이 사용자의 요청을 받는데, 개발자는 DispatcherServlet을 서블릿으로 등록해주어야 한다. 모든 사용자의 요청을 받기 위해 root를 의미하는 / 로 URL을 매핑한다.
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
|
cs |
DispatcherServlet
- HandlerMapping : 적합한 Controller를 선택
- HandlerAdapter : 해당하는 Controller 내에서 가장 적합한 메소드를 선택
- ViewResolver : 가장 적합한 JSP 파일 선택
servlet-context.xml
웹 설정파일인 web.xml에 스프링 설정파일의 역할을 하는 파일로 지정되어있다. 클래스로부터 빈(Bean) 객체를 생성하고 조립하는 역할
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
|
cs |
Controller
사용자의 요청을 실체로 처리하는 부분
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
|
cs |
View
클라이언트 요청정보(URL 매핑 값)에 해당하는 JSP파일 실행
'Spring > Study' 카테고리의 다른 글
스프링(Spring) Service & DAO 객체 구현 (0) | 2020.04.16 |
---|---|
스프링(Spring) 한글 처리 (0) | 2020.04.16 |
스프링(Spring) STS를 이용한 웹 프로젝트 생성 (0) | 2020.04.15 |
스프링(Spring) 웹 프로그래밍 설계 모델 (0) | 2020.04.14 |
스프링(Spring) Java 파일 분리 (0) | 2020.04.13 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
서버 실행 시 아래와 같이 The Specified JRE installation does not exist라는 에러가 발생하는 경우가 있다. 해당 에러는 서버에 JRE 경로가 잘못 지정되어있어서 발생하는 에러이다.
1. 상단의 Windows - Preferences 클릭
2. 좌측 트리의 Server - Runtime Environments에서 Tomcat 선택 후 Edit 클릭
3. JRE 버전을 선택하고 Finish 클릭
4. Apply and Close를 클릭하여 설정 적용
'Spring > Solve' 카테고리의 다른 글
인텔리제이(IntelliJ) JSP 파일 수정시 서버에 반영되지 않는 문제 (4) | 2020.04.22 |
---|---|
인텔리제이(IntelliJ) 서버 로그 문자열 깨지는 문제 (0) | 2020.04.22 |
Apache Tomcat 한글 깨짐 (0) | 2020.04.20 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
1. Eclipse 실행 후 Project Explorer 영역에서 마우스 우클릭 - New - Other... 클릭
2. spring을 검색해서 Spring Legacy Project 선택 후 Next 클릭
3. Project name을 입력하고, Spring MVC Project 선택 후 Next 클릭
4. Yes 클릭
5. package name 입력 후 Finish 클릭 (package name은 2단계 이상으로 해야 함)
6. 관련파일 다운로드 등이 완료될 때까지 대기(우측 하단에서 진행사항 확인)
7. 프로젝트 폴더 마우스 우클릭 - Run As - Run On Server를 클릭
8. Finish 클릭
9. 정상적으로 실행되는 것 확인
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 한글 처리 (0) | 2020.04.16 |
---|---|
스프링(Spring) MVC 웹 서비스 (0) | 2020.04.16 |
스프링(Spring) 웹 프로그래밍 설계 모델 (0) | 2020.04.14 |
스프링(Spring) Java 파일 분리 (0) | 2020.04.13 |
스프링(Spring) XML 파일을 JAVA 파일로 변경하기 (0) | 2020.04.13 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
STS(Spring Tool Suite)란 이클립스에서 스프링 기반의 애플리케이션 개발을 지원하는 개발 환경을 의미한다.
STS 설치 전, 웹 컨테이너인 Apache Tomcat이 설치되어 있어야 한다.
Apache Tomcat 설치 : https://devmoomini.tistory.com/43
1. 이클립스 상단의 Help - Eclipse Marketplace...를 클릭
2. sts를 검색해서 Spring Tools 3 Add-On for Spring Tools 4 3.9.12.RELEASE의 Install을 클릭
3. 모두 체크된 상태에서 Confirm 클릭
4. I accept the terms of the license agreements를 선택하고, Finish 클릭
5. Restart Now를 클릭하여 이클립스를 재실행하면 설치 완료
'Spring > Install' 카테고리의 다른 글
이클립스(Eclipse) Apache Tomcat 설정 (0) | 2020.04.20 |
---|---|
Apache Tomcat 설치 (0) | 2020.04.07 |
Maven 설치 (0) | 2020.04.07 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
Model1
JSP, Service, DAO를 하나의 파일로 처리하는 방식으로, 하나의 파일에서 모든 개발이 이루어지므로 개발 속도가 빠르지만 유지보수가 어렵다.
Model2
Controller, Service, DAO, View로 각각의 기능을 모듈화 하는 MVC 방식으로, 스프링에서 사용하는 방식이다. 특정 파일만 수정하면 되므로 유지보수가 수월하다.
스프링 MVC 프레임워크 설계구조
- HandlerMapping : 적합한 Controller를 선택
- HandlerAdapter : 해당하는 Controller 내에서 가장 적합한 메소드를 선택
- ViewResolver : 가장 적합한 JSP 파일 선택
DispatcherServlet 설정
JSP 웹 설정파일인 web.xml에 사용자의 모든 요청을 받기 위해 root를 의미하는 / 로 url을 매핑한다. 스프링 설정파일을 설정하면 스프링 컨테이너가 만들어지는데, 스프링 컨테이너에 HandlerMapping, HandlerAdapter, ViewResolver가 자동으로 생성되므로 개발자는 Controller와 View만 작업해주면 된다. (스프링 설정 파일을 설정하지 않으면 자동으로 설정해줌)
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
|
cs |
Controller 객체 - @Controller
스프링 설정 파일에 <annotation-driven /> 태그를 넣어주면 스프링 컨테이너를 사용하기 위한 여러 기능을 하는 클래스들이 빈(Bean) 객체로 스프링 설정 파일에 존재하게 된다. 컨트롤러로 사용할 클래스 이름 앞에 @Controller 어노테이션을 명시해준다.
servlet-context.xml
<annotation-driven />
|
cs |
HomeController.java
@Controller
public class HomeController {
}
|
cs |
Controller 객체 - @RequestMapping
설정한 URL로 매핑이 되도록 한다.
@RequestMappint("/success")
public String success(Model model) {
return "success";
}
|
cs |
Controller 객체 - Model 타입의 파라미터
개발자는 Model 객체에 데이터를 담아서 DispatcherServlet에 전달할 수 있다. DispatcherServlet에 전달된 Model 데이터는 View에서 가공되어 클라이언트에게 응답처리된다.
model.setAttribute("tempData", "model has data!!");
|
cs |
스프링 설정 파일에 InternalResourceViewResolver라는 빈(Bean) 객체를 생성하는데, InternalResourceViewResolver는 prefix, 리턴 값, suffix 값을 합쳐서 적절한 View 파일로 매핑하는 역할을 한다.
/WEB-INF/views/success.jsp
@RequestMapping("/success") public String success(Model model) { return "success"; } | cs |
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
|
'Spring > Study' 카테고리의 다른 글
스프링(Spring) MVC 웹 서비스 (0) | 2020.04.16 |
---|---|
스프링(Spring) STS를 이용한 웹 프로젝트 생성 (0) | 2020.04.15 |
스프링(Spring) Java 파일 분리 (0) | 2020.04.13 |
스프링(Spring) XML 파일을 JAVA 파일로 변경하기 (0) | 2020.04.13 |
스프링(Spring) 생명주기(Life Cycle) (0) | 2020.04.13 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
하나의 설정 파일로 관리를 하다 보면 소스가 길어지면서 유지보수가 어려워질 수 있다. 따라서 설정 파일을 기능별로 분리해서 사용하는 것이 효율적이다.
배열 형식으로 넣어주는 방법
MainClass.java
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(MemberConfig1.class, MemberConfig2.class, MemberConfig3.class);
EMSInformationService informationService = ctx.getBean("informationService", EMSInformationService.class);
informationService.outputEMSInformation();
ctx.close();
}
}
|
cs |
@import 어노테이션을 사용하는 방법
MemberConfigImport.java
@Configuration
@Import({MemberConfig2.class, MemberConfig3.class})
public class MemberConfigImport {
@Bean
public StudentDao studentDao() {
return new StudentDao();
}
}
|
cs |
MainClass.java
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(MemberConfigImport.class);
EMSInformationService informationService = ctx.getBean("informationService", EMSInformationService.class);
informationService.outputEMSInformation();
ctx.close();
}
}
|
'Spring > Study' 카테고리의 다른 글
스프링(Spring) STS를 이용한 웹 프로젝트 생성 (0) | 2020.04.15 |
---|---|
스프링(Spring) 웹 프로그래밍 설계 모델 (0) | 2020.04.14 |
스프링(Spring) XML 파일을 JAVA 파일로 변경하기 (0) | 2020.04.13 |
스프링(Spring) 생명주기(Life Cycle) (0) | 2020.04.13 |
스프링(Spring) 의존객체 선택 (0) | 2020.04.12 |