일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rpa
- 배열
- db
- Controller
- Array
- Board
- 이클립스
- Scanner
- git
- 조건문
- React
- mysql
- View
- 상속
- Eclipse
- jsp
- SpringBoot
- Database
- string
- Oracle
- Uipath
- Thymeleaf
- Java
- html
- 문자열
- JDBC
- spring
- MVC
- jquery
- API
- Today
- Total
유정잉
53일차 스프링 [ MVC ] 본문
[ 일반 project에서 maven project로 바꾸는 방법 1 - dynamic -> convert maven ]
1) Porject 오른쪽 클릭 -> Configure -> Convert to Maven Project ( project가 maven으로 바뀐 거 확인할 수 있음)
[ 일반 project에서 maven project로 바꾸는 방법 2 - sts 설치 ]
1) Help -> Eclipse Marketplace 혹은 spring sts 검색 후 다운로드
Spring | Tools
spring.io
[ 일반 project에서 maven project로 바꾸는 방법 3 - 전자정부프레임워크 ]
1) 개발자 교육 -> 교육자료 -> win or man 환경에 맞는 버전 설치
https://www.egovframe.go.kr/home/sub.do?menuNo=65
교육자료 | 표준프레임워크 포털 eGovFrame
처리중입니다. 잠시만 기다려주십시오.
www.egovframe.go.kr
[ MVC_Basic_01 - project ]
config 작업을 xml 파일로
src -> main -> webapp -> WEB-INF -> config(폴더생성) -> root-context.xml과 servlet-context.xml 활용
1) Dynamic project로 MVC_Basic_01 생성 -> Convert Maven -> pom.xml 파일 생성 된 것 확인
2) pom.xml 환경 설정
[ pom.xml ]
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MVC_Basic_01</groupId>
<artifactId>MVC_Basic_01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<!-- 라이브러리 버전관리 -->
<properties>
<javax.servlet-version>4.0.1</javax.servlet-version>
<javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version>
<javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version>
<org.springframework-version>5.2.2.RELEASE</org.springframework-version>
<!-- <org.springframework-version>4.3.25.RELEASE</org.springframework-version> -->
</properties>
<!-- 라이브러리 셋팅 -->
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${javax.servlet.jsp-version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${javax.servlet.jsp.jstl-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
</dependencies>
</project>
3) src -> main -> wewbapp -> WEB-INF -> config & views 폴더와 web.xml xml 파일 생성
[ web.xml ]
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
<!-- 현재 웹 애플리케이션에서 받아들이는 모든 요청에 대해 appServlet이라는 이름으로 정의되어 있는 서블릿을 사용하겠다. -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 요청 정보를 분석해서 컨트롤러를 선택하는 서블릿을 지정한다. -->
<servlet>
<servlet-name>appServlet</servlet-name>
<!-- Spring MVC에서 제공하고 있는 기본 서블릿을 지정한다. -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- Spring MVC 설정을 위한 xml 파일을 지정한다. -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Bean을 정의할 xml 파일을 지정한다. -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/root-context.xml</param-value>
</context-param>
<!-- 리스너설정 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 파라미터 인코딩 필터 설정 -->
<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>
</web-app>
[ config 폴더 안 servlet-context.xml 파일 ]
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 스캔한 패키지 내부의 클래스 중 controller로 로딩하도록 한다 -->
<annotation-driven/>
<!-- 스캔할 Bean들이 모여있는 패키지를 지정한다 -->
<context:component-scan base-package="kr.bit.controller"/>
<!-- controller메서드에서 반환하는 문자열 앞 뒤에 붙힐 경로 설정 -->
<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>
<!-- 정적파일 세팅 -->
<resources location="/resources/" mapping="/**"></resources>
</beans:beans>
[ config 폴더 안 root-context.xml 파일 ]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
[ views 폴더 안 indes.jsp ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Spring MVC</h1>
</body>
</html>
4) src/main/java에 kr.bit.controller package 생성 -> HomeController.java class 생성
package kr.bit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
@RequestMapping(value="/", method=RequestMethod.GET)
public String home() {
System.out.println("home");
return "index";
}
}
[ MVC_Basic_02 - project ]
config 작업을 .java 파일로
src/main/java -> kr.bit.config(패키지생성) -> RootAppContext, ServletAppContext, SpringConfigClass java class 생성
1) src/main/java -> kr.bit.config package생성 후 RootAppContext, ServletAppContext, SpringConfigClass java class 생성
package kr.bit.config;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RootAppContext { //root-context.xml
}
package kr.bit.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
@ComponentScan("kr.bit.controller")
public class ServletAppContext implements WebMvcConfigurer{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
WebMvcConfigurer.super.configureViewResolvers(registry);
registry.jsp("/WEB-INF/views/",".jsp");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
WebMvcConfigurer.super.addResourceHandlers(registry);
registry.addResourceHandler("/**").addResourceLocations("/resources/");
}
}
package kr.bit.config;
import javax.servlet.Filter;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpringConfigClass extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/"};
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {ServletAppContext.class};
}
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {RootAppContext.class};
}
@Override
protected Filter[] getServletFilters() {
// TODO Auto-generated method stub
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
return new Filter[] {encodingFilter};
}
}
[ MVC_Basic_03 - project ]
1) SpringController와 Sub1Controller의 java class에서 @RequsetMapping 작업 후 views 폴더에 jsp 파일 실행
방법 3가지 !
첫번째방법 : views 폴더 안에 있는 jsp
두번쩨방법 : views 폴더 안에 sub1 폴더 안에 jsp @RequestMapping(value="sub1/spring3",method=RequestMethod.GET)로 Mapping
세번째방법 : views 폴더 안에 sub2 폴더 안에 jsp 를 @RequestMapping("/sub2") 로 Mapping
[ kr.bit.controller package의 SpringController.java 자바 클래스 파일 ]
package kr.bit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class SpringController {
@RequestMapping(value="/spring1",method=RequestMethod.GET)
public String spring1() { //파일 넘길때는 반환형 String 사용
return "spring1"; //spring1.jsp 화면으로 이동
}
@RequestMapping(value="/spring2",method=RequestMethod.GET)
public String spring2() {
return "spring2"; //spring1.jsp 화면으로 이동
}
}
[ kr.bit.controller package의 Sub1Controller.java 자바 클래스 파일 ]
package kr.bit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class Sub1Controller {
@RequestMapping(value="sub1/spring3",method=RequestMethod.GET)
public String spring3() {
return "sub1/spring3";
}
@RequestMapping(value="sub1/spring4",method=RequestMethod.GET)
public String spring4() {
return "sub1/spring4";
}
}
[ kr.bit.controller package의 Sub2Controller.java 자바 클래스 파일 ]
package kr.bit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/sub2")
public class Sub2Controller {
@RequestMapping(value="/spring5",method=RequestMethod.GET)
public String spring5() {
return "sub2/spring5";
}
@RequestMapping(value="/spring6",method=RequestMethod.GET)
public String spring6() {
return "sub2/spring6";
}
}
[ index.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="spring1">spring1</a><br>
<a href="spring2">spring2</a><br>
<a href="sub1/spring3">sub1/spring3</a><br>
<a href="sub1/spring4">sub1/spring4</a><br>
<a href="sub1/spring5">sub1/spring5</a><br>
<a href="sub1/spring6">sub1/spring6</a><br>
</body>
</html>
[ spring1.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>스프링1</h1>
</body>
</html>
[ MVC_Basic_04 - project ]
@RequestMapping(value="", method={RequestMethod.GET,RequestMethod.POST}),
@GetMapping, @PostMapping
[ SpringController.java class 파일 ]
package kr.bit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
//Bean으로 등록함과 동시에 @Controller 작업이 일어나면서 Mapping 하겠다
@Controller
public class SpringController {
@RequestMapping(value="/spring1" , method=RequestMethod.GET) //url만 가능(=GET)
public String spring1() {
return "spring1";
}
@RequestMapping(value="/spring2" , method=RequestMethod.GET) //url만 가능(=GET)
public String spring2() {
return "spring2";
}
@GetMapping("/spring4") //url만 가능(=GET)
public String spring4() {
return "spring4";
}
@PostMapping("/spring5") //button만 가능(=POST)
public String spring5() {
return "spring5";
}
@RequestMapping(value="/spring7" , method= {RequestMethod.GET , RequestMethod.POST}) //url과 button 둘다 가능 (=GET과 POST) / 중괄호{} 이용하여 한번에 쓰는 법
public String spring7() {
return "spring7";
}
// 이런식으로 따로 따로 한번에 쓰는 것은 불가능 밑에 처럼 아예 따로 따로 써야 됨
// @GetMapping("/spring8")
// @PostMapping("/spring8")
// public String spring8() {
// return "spring8";
// }
@GetMapping("/spring8")
public String spring8() {
return "spring8";
}
@PostMapping("/spring8")
public String spring88() {
return "spring8";
}
}
[ index.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="spring1">spring1</a><br>
<form action="spring1" method="post">
<button type="submit">spring1</button>
</form>
<a href="spring2">spring2</a><br>
<form action="spring2" method="post">
<button type="submit">spring2</button>
</form>
<a href="spring3">spring3</a><br>
<form action="spring3" method="post">
<button type="submit">spring3</button>
</form>
<a href="spring4">spring4</a><br>
<form action="spring4" method="post">
<button type="submit">spring4</button>
</form>
<a href="spring5">spring5</a><br>
<form action="spring5" method="post">
<button type="submit">spring5</button>
</form>
<a href="spring6">spring6</a><br>
<form action="spring6" method="post">
<button type="submit">spring6</button>
</form>
<a href="spring7">spring7</a><br>
<form action="spring7" method="post">
<button type="submit">spring7</button>
</form>
<a href="spring8">spring8</a><br>
<form action="spring8" method="post">
<button type="submit">spring8</button>
</form>
</body>
</html>
[ spring1.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>스프링1</h1>
</body>
</html>
'네이버 클라우드 부트캠프 > 복습 정리' 카테고리의 다른 글
55일차 스프링 [ MVC - session, properties, 유효성검사 ] (2) | 2024.05.09 |
---|---|
54일차 스프링 [ MVC - 추출, 주입, form taglib ] (1) | 2024.05.08 |
52일차 스프링 [ Component, AOP, JDBC ] (0) | 2024.05.03 |
51일차 스프링 [ 주입 DI ] (0) | 2024.05.02 |
50일차 스프링 [ 환경설정, 개념 ] (0) | 2024.05.01 |