지구정복

[Spring] 01/28 | Spring(공유데이터 사용, Annotaion사용, 우편번호검색기, 게시판) 본문

데이터 엔지니어링 정복/HTML-CSS-JavaScript-Spring-Node.js

[Spring] 01/28 | Spring(공유데이터 사용, Annotaion사용, 우편번호검색기, 게시판)

eeaarrtthh 2021. 1. 28. 17:52
728x90
반응형

1. Spring

더보기

1. 공유데이터 사용

메이븐프로젝트를 웹앱으로 만든다. 그리고 build path에서 server runtime 라이브러리에서 아파치 톰캣을 추가한다. 그리고 현재 JRE System Library를 보면 버전이 1.5인데 나중에 annotation 사용할 때 오류가 발생할 수 있는 버전이므로 1.8로 바꿔줘야 한다.

먼저 Build Path에서 아래와 같이 설정한다.

다음 다시 프로젝트 오른쪽 클릭하고 properties에서 Project Facts에서 아래와 같이 설정한다.

 

라이브러리를 가져온다.

-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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.exam</groupId>
	<artifactId>web02</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>web02 Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>

		<!-- Generic properties -->
		<java.version>1.8</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		
		<!-- Web -->
		<jsp.version>2.2</jsp.version>
		<jstl.version>1.2</jstl.version>
		<servlet.version>2.5</servlet.version>
		
		<!-- Spring -->
		<spring-framework.version>5.2.5.RELEASE</spring-framework.version>

		<!-- Hibernate / JPA -->
		<hibernate.version>4.2.1.Final</hibernate.version>

		<!-- Logging -->
		<logback.version>1.0.13</logback.version>
		<slf4j.version>1.7.5</slf4j.version>

		<!-- Test -->
		<junit.version>4.11</junit.version>

	</properties>
	
	<dependencies>
	
		<!-- Spring MVC -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring-framework.version}</version>
		</dependency>
		
		<!-- Other Web dependencies -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>${jstl.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${servlet.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>${jsp.version}</version>
			<scope>provided</scope>
		</dependency>
	
		<!-- Spring and Transactions -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring-framework.version}</version>
		</dependency>

		<!-- Logging with SLF4J & LogBack -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>${logback.version}</version>
			<scope>runtime</scope>
		</dependency>

		<!-- Hibernate -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>${hibernate.version}</version>
		</dependency>

		
		<!-- Test Artifacts -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring-framework.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
		    <groupId>org.mariadb.jdbc</groupId>
		    <artifactId>mariadb-java-client</artifactId>
		    <version>2.7.1</version>
		</dependency>
	</dependencies>	

</project>

-web.xml ( 맨 위에 코드 web-app버전을 3_1로 사용)

<web-app
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

	<display-name>Archetype Created Web Application</display-name>
	
	<!-- 공유데이터 환경 설정  -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/application-config.xml</param-value>
	</context-param>
	<listener><!-- 리스너가 시작되면 위의 context-param을 읽어들인다.  -->
		<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/mvc-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

</web-app>

 

다음으로 WEB-INF에 spring - appServlet 폴더를 만들고 그 안에 mvc-config파일과

WEB-INF에 application config 파일을 만든다.

 

다음으로 src/main/java 에 share란 패키지를 만들고 그 안에 ShareClass.java를 만들자.

-ShareClass.java

package share;

public class ShareClass {
	private String shareData1;

	public ShareClass() {
		System.out.println( "ShareClass 생성자 호출" );
	}
	
	public String getShareData1() {
		return shareData1;
	}
	public void setShareData1(String shareData1) {
		this.shareData1 = shareData1;
	}
}

 -application-config.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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<bean id="shareClass" class="share.ShareClass">
		<property name="shareData1" value="난 공유자료임" />
	</bean>

</beans>

-mvc-config.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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<bean name="/list1.do" class="model2.ListAction1">
		<!-- application-config의 shareClass이다.  -->
		<property name="shareClass" ref="shareClass" />
	</bean>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>

-index.jsp (실행jsp)

<html>
<body>
<h2>Hello World!</h2>
<ul>
	<li><a href="./list1.do">list1.do</a></li>
</ul>
</body>
</html>

-listview1.sjp

<%@ 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>
listview1
</body>
</html>

 -ListAction1.java

package model2;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.property.Setter;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import share.ShareClass;

public class ListAction1 implements Controller {
	private ShareClass shareClass;
	
	public void setShareClass(ShareClass shareClass) {
		this.shareClass = shareClass;
	}
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println( "ListAction1 호출" );
		System.out.println( "shardData1 : " + shareClass.getShareData1() );
		
		return new ModelAndView( "listview1" );
	}

}

-실행결과

공유데이터 실행순서는 

  1. index.jsp 실행후 <a>태그 클릭
  2. web.xml의 서블릿설정에서 .do로 끝나는 것은 mvc-config.xml에서 처리되도록 설정했기때문에
    mvc-config로 이동
  3. <bean name="/list1.do"~ 태그로 ListAction1객체 만들어지는데 속성값으로 shareClass라는 객체 참조해서 
    속성값 설정
  4. ListAction1에서 ShareClass타입인 shareClass 객체만들어지고 setter를 통해 shareClass 초기화된다.
  5. return값으로 viewName은 "listview1"인 ListAction1객체를 리턴해준다.
  6. 다시 mvc-config로 돌아와서 listview1에 접두사와 접미사 붙어서 /WEB-INF/views/listview1.jsp가 실행된다.

 

2. Annotation 사용하기

 먼저 spring legacy project를 만들고 아래와 같이 설정한다.

 그리고 이클립스 우측하단에 다운로드가 다 될때까지 기다린다.

이렇게 만들면 위에 공유데이터 했던 기본적인 세팅이 모두 갖춰져있다.

몇가지만 수정하자.

-HomeController.java

package com.exam.mvc01;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/index.do", 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";
	}
	
}

-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<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>*.do</url-pattern>
	</servlet-mapping>

</web-app>

 -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>
<ul>
	<li><a href="index.do">index.do</a></li>
</ul>
</body>
</html>

 

메이븐 프로젝트에서 spring프로젝트로 직접 만들어보자.

먼저 메이븐 프로젝트를 만들고 webapp을 설정한다.

그리고 build path에서 서버라이브러리 설정을 해준다.

그리고 맨 위에서 했던 것처럼 자바버전을 수정해준다.

 

WEB-INF폴더에 spring - appServlet폴더를 만든다.

다음으로 아래와 같이 beans, context, mvc를 체크해서 servlet-context.xml을 만든다.

어노테이션 기법을 쓸 때는 빈즈가 기본이 아니라 mvc가 기본이된다.

따라서 xmlns와 xmlns:mvc의 주소값을 바꿔준다.

-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:context="http://www.springframework.org/schema/context"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<!-- list1.do > ListAction1 > listview1.jsp  -->
	<beans:bean class="Controller.ConfigController1" />

	<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>
	
	

</beans:beans>

 -root-contesxt.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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">


</beans>

 -web.xml

<web-app
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

	<display-name>Archetype Created Web Application</display-name>
	
	<!-- 공유데이터 환경 설정  -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/root-context.xml</param-value>
	</context-param>
	<listener><!-- 리스너가 시작되면 위의 context-param을 읽어들인다.  -->
		<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>dispatcher</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>dispatcher</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

</web-app>

 -ConfigController1.java

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ConfigController1 {
	
	@RequestMapping( "/list1.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "listview1";
	}
}

 -ConfigController2.java

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ConfigController2 {
	
	@RequestMapping( "/list2.do" )
	public String handleRequest2() {
		System.out.println( "handleRequest2() 호출" );
		return "listview2";
	}
}

-listview1.jsp   & -listview2.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>
listview1
</body>
</html>



<%@ 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>
listview2
</body>
</html>

-index.jsp (실행jsp)

<html>
<body>
<h2>Hello World!</h2>
<ul>
	<li><a href="list1.do">list1.do</a>
	<li><a href="list2.do">list2.do</a>
</ul>
</body>
</html>

-실행결과

 

위에 servlet-context.xml에서 controller를 각각 적지 않고 아래와 같이 스캔하도록 코드를 작성해도 정상적으로 실행이 된다.

<?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:context="http://www.springframework.org/schema/context"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<!-- list1.do > ListAction1 > listview1.jsp  -->
	<!-- 
	<beans:bean class="Controller.ConfigController1" />
	<beans:bean class="Controller.ConfigController2" />
 -->
 	<!-- 직접 controller를 기술하지 않고 아래처럼 스캔을 해서 controller를 불러올 수 있다.  -->
 	<context:component-scan base-package="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>
	

</beans:beans>

 

다음으로는 가상경로를 만들 수 있다

-ConfiController1.java

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ConfigController1 {
	
	@RequestMapping( "/board/list1.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "listview1";
	}
	
	@RequestMapping( "/board/list2.do" )
	public String handleRequest2() {
		System.out.println( "handleRequest2() 호출" );
		return "listview2";
	}
}

-index.jsp

<html>
<body>
<h2>Hello World!</h2>
<ul>
	<li><a href="list1.do">list1.do</a>
	<li><a href="list2.do">list2.do</a>
	<li><a href="board/list1.do">board/list1.do</a>
	<li><a href="board/list2.do">board/list1.do</a>
</ul>
</body>
</html>

-실행결과

 

이때 ConfigController1.java에서 중복되는 경로를 한 번만 쓰도록 코드를 수정하자. 실행결과는 같다.

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/board")
public class ConfigController1 {
	
	@RequestMapping( "/list1.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "listview1";
	}
	
	@RequestMapping( "/list2.do" )
	public String handleRequest2() {
		System.out.println( "handleRequest2() 호출" );
		return "listview2";
	}
}

 

특정 사이트를 넘겨줄 수도 있다.

-ConfiController1.java

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/board")
public class ConfigController1 {
	
	@RequestMapping( "/list1.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "listview1";
	}
	
	@RequestMapping( "/list2.do" )
	public String handleRequest2() {
		System.out.println( "handleRequest2() 호출" );
		return "listview2";
	}
	
	//다른 사이트 
	@RequestMapping( "/daum.do" )
	public String handleRequest3() {
		System.out.println( "handleRequest3() 호출" );
		return "redirect:https://www.daum.net";
	}
}

 -index.jsp

<html>
<body>
<h2>Hello World!</h2>
<ul>
	<li><a href="list1.do">list1.do</a>
	<li><a href="list2.do">list2.do</a>
	<li><a href="board/list1.do">board/list1.do</a>
	<li><a href="board/list2.do">board/list1.do</a>
	<li><a href="board/daum.do">board/daum.do</a>
</ul>
</body>
</html>

 

 이번에는 데이터 전송방식을 get과 post 각각을 나눠서 처리해보자.

-write.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>

<form action="write_ok.do" method="get">
데이터 <input type="text" name="data" />
<input type="submit" value="전송" />
</form>

<form action="write_ok.do" method="post">
데이터 <input type="text" name="data" />
<input type="submit" value="전송" />
</form>

</body>
</html>

-ConfigController2.java

package Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public String handleRequest21() {
		System.out.println( "handleRequest21() 호출" );
		return "write_ok";
	}
	@RequestMapping( value="/write_ok.do", method=RequestMethod.POST )
	public String handleRequest22() {
		System.out.println( "handleRequest22() 호출" );
		return "write_ok";
	}
}

 

 

이번에는 parameter를 받아보자.

-ConfigController2.java

package Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public String handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return "write_ok";
	}
	@RequestMapping( value="/write_ok.do", method=RequestMethod.POST )
	public String handleRequest22( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest22() 호출 : " + request.getParameter("data")  );
		return "write_ok";
	}
}

 

또한 아래와 같이 사용할 수 있다. Action클래스와 같은 메서드 역할을 한다.

package Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public ModelAndView handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return new ModelAndView( "write_ok" );
	}
	@RequestMapping( value="/write_ok.do", method=RequestMethod.POST )
	public ModelAndView handleRequest22( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest22() 호출 : " + request.getParameter("data")  );
		return new ModelAndView( "write_ok" );
	}
}

 

이번에는 데이터를 받는 것 말고 데이터를 넘겨줘보자. 아래와 같이 코딩한다.

-ConfigController2.java

package Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public ModelAndView handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return new ModelAndView( "write_ok" );
	}
	@RequestMapping( value="/write_ok.do", method=RequestMethod.POST )
	public ModelAndView handleRequest22( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest22() 호출 : " + request.getParameter("data")  );
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "write_ok" );
		modelAndView.addObject( "data", request.getParameter("data") );
		
		return modelAndView;
	}
}

여기서 넘겨주는 데이터는 write_ok.jsp에서 받는다.

-write_ok.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>
write_ok.jsp
<br><hr>

data : <%= request.getAttribute( "data" ) %>
</body>
</html>

 post방식으로 데이터를 넘겨주면

write_ok.do에서 받을 수 있다.

 

 

 다른 방법으로 데이터를 넘겨주자.

-ConfigController2.java

package Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public ModelAndView handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return new ModelAndView( "write_ok" );
	}
	/*
	 * @RequestMapping( value="/write_ok.do", method=RequestMethod.POST ) public
	 * ModelAndView handleRequest22( HttpServletRequest request, HttpServletResponse
	 * response ) { System.out.println( "handleRequest22() 호출 : " +
	 * request.getParameter("data") );
	 * 
	 * ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName(
	 * "write_ok" ); modelAndView.addObject( "data", request.getParameter("data") );
	 * 
	 * return modelAndView; }
	 */
	
	 @RequestMapping( value="/write_ok.do", method=RequestMethod.POST )
	 public String handleRequest22( HttpServletRequest request, HttpServletResponse response, Model model ) {
		 
		 model.addAttribute( "data", request.getParameter("data") );
		 return "write_ok";
	 }
	
}

 

어노테이션 기법으로 사용할 수 있다.

-ConfigController2.java

package Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	/*
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public ModelAndView handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return new ModelAndView( "write_ok" );
	}

	 * @RequestMapping( value="/write_ok.do", method=RequestMethod.POST ) public
	 * ModelAndView handleRequest22( HttpServletRequest request, HttpServletResponse
	 * response ) { System.out.println( "handleRequest22() 호출 : " +
	 * request.getParameter("data") );
	 * 
	 * ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName(
	 * "write_ok" ); modelAndView.addObject( "data", request.getParameter("data") );
	 * 
	 * return modelAndView; }
	 */
	
	/*
	 * @RequestMapping( value="/write_ok.do", method=RequestMethod.POST ) public
	 * String handleRequest22( HttpServletRequest request, HttpServletResponse
	 * response, Model model ) {
	 * 
	 * model.addAttribute( "data", request.getParameter("data") ); return
	 * "write_ok"; }
	 */
	
	// "data"란 것을 받아와서 pdata라고 메서드 안에서 사용한다.
	@RequestMapping( value="/write_ok.do" )
	public String handleRequest2( @RequestParam( "data" ) String data, Model model ) {
		System.out.println( "handelRequest2() 호출" + data );
		
		//model에 "data"란 이름의 데이터에 data를 넣어서 보낸다.
		model.addAttribute( "data", data );
		
		return "write_ok";
	}
}

 

 또한 아래와 같이 데이터를 넘겨줄 수 있다.

-ConfigController2.java

package Controller;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ConfigController2 {
	//write.do -> write.jsp
	//write_ok.do -> write_ok.jsp
	@RequestMapping( "/write.do" )
	public String handleRequest1() {
		System.out.println( "handleRequest1() 호출" );
		return "write";
	}
	
	/*
	//get과 post방식을 나눠준다.
	@RequestMapping( value="/write_ok.do", method=RequestMethod.GET )
	public ModelAndView handleRequest21( HttpServletRequest request, HttpServletResponse response ) {
		System.out.println( "handleRequest21() 호출 : " + request.getParameter("data") );
		return new ModelAndView( "write_ok" );
	}

	 * @RequestMapping( value="/write_ok.do", method=RequestMethod.POST ) public
	 * ModelAndView handleRequest22( HttpServletRequest request, HttpServletResponse
	 * response ) { System.out.println( "handleRequest22() 호출 : " +
	 * request.getParameter("data") );
	 * 
	 * ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName(
	 * "write_ok" ); modelAndView.addObject( "data", request.getParameter("data") );
	 * 
	 * return modelAndView; }
	 */
	
	/*
	 * @RequestMapping( value="/write_ok.do", method=RequestMethod.POST ) public
	 * String handleRequest22( HttpServletRequest request, HttpServletResponse
	 * response, Model model ) {
	 * 
	 * model.addAttribute( "data", request.getParameter("data") ); return
	 * "write_ok"; }

	
	// 이름이 "data"란 데이터를 받아와서 메서드 안에서 사용할 data라고 만든다.
	@RequestMapping( value="/write_ok.do" )
	public String handleRequest2( @RequestParam( "data" ) String data, Model model ) {
		System.out.println( "handelRequest2() 호출" + data );
		
		//model에 "data"란 이름의 데이터에 data를 넣어서 보낸다.
		model.addAttribute( "data", data );
		
		return "write_ok";		
	}
		 */
	
	@RequestMapping( value="/write_ok.do" )
	public String handleRequest2( String data, Locale locale, Model model ) {
		System.out.println( "handelRequest2() 호출" + data );
		
		model.addAttribute( "data", data );
		
		return "write_ok";
	}
	
	
}

 

또한 get과 post는 어노테이션 방법으로 아래와 같이 바뀔 수 있다.

method=RequestMethod.GET
	=>@GetMapping( "/write_ok.do" )
    
method=RequestMethod.POST
	=>@PostMapping( "/write_ok.do" )

 또한 아래와 같이 쓸 수 있다.

"data"란 데이터를 받는데 값이 넘어오지 않을 경우 기본값인 value로 설정하고 꼭 필수는 아니라는 의미이다.

public String handleRequest1( @RequestParam( value="data", defaultValue="value", require=false ) String data )

 

 우편번호 검색기 만들기

ZipcodeMVCEx01 1/26에 했던 프로젝트를 참고한다.

zipcode.do 를 요청하면 zipcode.jsp 가 보이고
zipcode_ok.do 를 요청하면 zipcode_ok.jsp 가 보이도록 만들어야 한다.

먼저 spring regacy 프로젝트에서 maven 프로젝트를 만든다. spring regacy에서 maven을 만들었기때문에

기본적인 설정이 모두 되어있다.

 

그리고 build path에서 자바 버전과 project Facets에서 java버전을 1.8로 변경해준다.

또한 pom.xml에서도 properties 태그의 버전을 변경해준다.

-pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.exam</groupId>
	<artifactId>zipcodesearch</artifactId>
	<name>ZipcodeSearchEx01</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<properties>
		<java-version>1.8</java-version>
		<org.springframework-version>5.2.8.RELEASE</org.springframework-version>
		<org.aspectj-version>1.9.5</org.aspectj-version>
		<org.slf4j-version>1.7.30</org.slf4j-version>
	</properties>
	<dependencies>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>

		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.15</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>

		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
		    <groupId>org.mariadb.jdbc</groupId>
		    <artifactId>mariadb-java-client</artifactId>
		    <version>2.7.1</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<additionalProjectnatures>
						<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
					</additionalProjectnatures>
					<additionalBuildcommands>
						<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
					</additionalBuildcommands>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>true</downloadJavadocs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<compilerArgument>-Xlint:all</compilerArgument>
					<showWarnings>true</showWarnings>
					<showDeprecation>true</showDeprecation>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>1.2.1</version>
				<configuration>
					<mainClass>org.test.int1.Main</mainClass>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	
	<!-- Processes application requests -->
	<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>*.do</url-pattern>
	</servlet-mapping>

</web-app>

-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<context>
	<Resource
		name = "jdbc/mariadb1"
		auth = "Container"
		type = "javax.sql.DataSource"
		driverClassName = "org.mariadb.jdbc.Driver"
		url = "jdbc:mysql://localhost:3307/sample"
		username = "root"
		password = "!123456"
	/>
</context>

-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 https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
		
</beans>

-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 https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<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>
	
	<context:component-scan base-package="com.exam.zipcodesearch" />
	
	
	
</beans:beans>

-zipcode.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>

<form action="zipcode_ok.do" method="post">
동이름 : <input type="text" name="dong" />
<input type="submit" value="동이름 검색" />
</form>

</body>
</html>

-zipcode_ok.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>
zipcode_ok.jsp
<%= request.getAttribute( "html" ) %>

</body>
</html>

-HomeController.java

package com.exam.zipcodesearch;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import model1.ZipcodeDAO;

@Controller
public class HomeController {
	
	@RequestMapping( "/zipcode.do" )
	public String zipcode() {
		return "zipcode";
	}
	
	@RequestMapping( "/zipcode_ok.do" )
	public ModelAndView zipcode_ok(String dong) {
		
		System.out.println( "ZipcodeOkAction 호출" );
		
		ZipcodeDAO dao = new ZipcodeDAO();
		String html = dao.searchDong( dong ).toString();
		System.out.println( html );
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "zipcode_ok" );
		
		modelAndView.addObject( "html", html );
		
		return modelAndView;
	}
}

-model1/ZipcodeDAO.java

package model1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ZipcodeDAO {
	private DataSource dataSource = null;
	StringBuffer html = new StringBuffer();
	
	public ZipcodeDAO() {
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
			this.dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb1" );
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public StringBuffer searchDong( String strDong ) {
		if ( strDong != null ) {
			Connection conn = null;
			PreparedStatement pstmt = null;
			ResultSet rs = null;
			
			try {
				conn = dataSource.getConnection();
				
				String sql = "select zipcode, sido, gugun, dong, ri, bunji, seq from zipcode where dong like ?";
				pstmt = conn.prepareStatement(sql);
				pstmt.setString( 1, strDong + "%" );
				rs = pstmt.executeQuery();
				
				html.append( "<table border='1' width='900'>" );
				while( rs.next() ) {
					html.append( "<tr width='100'>" );
					html.append( "	<td>" + rs.getString( 1 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 2 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 3 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 4 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 5 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 6 ) + "<br>" + "</td>" );
					html.append( "	<td>" + rs.getString( 7 ) + "<br>" + "</td>" );
					html.append( "</tr>" );
				}
				html.append( "</table>" );
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		
		return html;
	}

}

-model1/ZipcodeTO.java

package model1;

public class ZipcodeTO {
	private String zipcode;
	private String sido;
	private String gugun;
	private String dong;
	private String ri;
	private String bunji;
	
	public String getZipcode() {
		return zipcode;
	}
	public String getSido() {
		return sido;
	}
	public String getGugun() {
		return gugun;
	}
	public String getDong() {
		return dong;
	}
	public String getRi() {
		return ri;
	}
	public String getBunji() {
		return bunji;
	}
	
	public void setZipcode(String zipcode) {
		this.zipcode = zipcode;
	}
	public void setSido(String sido) {
		this.sido = sido;
	}
	public void setGugun(String gugun) {
		this.gugun = gugun;
	}
	public void setDong(String dong) {
		this.dong = dong;
	}
	public void setRi(String ri) {
		this.ri = ri;
	}
	public void setBunji(String bunji) {
		this.bunji = bunji;
	}
}

 -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>
<ul>
	<li><a href="zipcode.do">zipcode.do</a>
</ul>
</body>
</html>

 

 

 

게시판 만들기

필요한 코드들만 작성

-sevlet-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:context="http://www.springframework.org/schema/context"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

	<beans:bean class="spring.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>

</beans:beans>

-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.spring</url-pattern>
	</filter-mapping>
	
	<!-- Processes application requests -->
	<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>*.spring</url-pattern>
	</servlet-mapping>

</web-app>

 -index.jsp(실행jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!</h2>
<ul>
	<li><a href="list.spring">list.spring</a>
</ul>
</body>
</html>

 -src/main/java/spring/Controller.java

package spring;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import model1.BoardDAO;
import model1.BoardTO;

@org.springframework.stereotype.Controller
public class Controller {
	
	@RequestMapping( "list.spring" )
	public ModelAndView board_list1() {
		
		BoardDAO dao = new BoardDAO();
		ArrayList<BoardTO> lists =  dao.boardList();
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_list1" );
		modelAndView.addObject( "lists", lists );
		
		return modelAndView;
	}
	
	@RequestMapping( "write.spring" )
	public ModelAndView board_write() {
		return new ModelAndView( "board_write1" );
	}
	
	@RequestMapping( "write_ok.spring" )
	public ModelAndView board_write1_ok( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSubject( request.getParameter( "subject" ) );
		to.setWriter( request.getParameter( "writer" ) );
		to.setMail( "" );
		if( !request.getParameter( "mail1" ).equals("") && !request.getParameter( "mail2" ).equals("")) {
			to.setMail( request.getParameter( "mail1" ) + "@" + request.getParameter( "mail2" ) );
		}
		to.setPassword( request.getParameter( "password" ) );
		to.setContent( request.getParameter( "content" ) );
		
		to.setWip( request.getRemoteAddr() );
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardWriteOk(to);
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_write1_ok" );
		modelAndView.addObject( "flag", flag );

		return modelAndView;
	}
	
	@RequestMapping( "view.spring" )
	public ModelAndView board_view1( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSeq( request.getParameter( "seq" ) );
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardView(to);
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_view1" );
		modelAndView.addObject( "to", to );
		
		return modelAndView;
	}
	
	@RequestMapping( "delete.spring" )
	public ModelAndView board_delete1( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSeq( request.getParameter( "seq" ) );

		BoardDAO dao = new BoardDAO();
		to = dao.boardDelete( to );
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_delete1" );
		modelAndView.addObject( "to", to );
		
		return modelAndView;
	}
	
	@RequestMapping( "delete_ok.spring" )
	public ModelAndView board_delete1_ok( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSeq( request.getParameter( "seq" ) );
		to.setPassword( request.getParameter( "password" ) );

		BoardDAO dao = new BoardDAO();
		int flag = dao.boardDeleteOk( to );
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_delete1_ok" );
		modelAndView.addObject( "flag", flag );
		
		return modelAndView;
	}
	
	@RequestMapping( "modify.spring" )
	public ModelAndView board_modify1( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSeq( request.getParameter( "seq" ) );
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardModify( to );
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_modify1" );
		modelAndView.addObject( "to", to );
		
		return modelAndView;
	}
	
	@RequestMapping( "modify_ok.spring" )
	public ModelAndView board_modify1_ok( HttpServletRequest request, HttpServletResponse response ) {
		BoardTO to = new BoardTO();
		to.setSeq( request.getParameter( "seq" ) );
		to.setPassword( request.getParameter( "password" ) );
		
		to.setSubject( request.getParameter( "subject" ) );
		to.setMail( "" );
		if( !request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("") ) {
			to.setMail( request.getParameter("mail1") + "@" + request.getParameter("mail2") );
		}
		to.setContent( request.getParameter( "content" ) );
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardModifyOk( to );

		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName( "board_modify1_ok" );
		modelAndView.addObject( "flag", flag );
		modelAndView.addObject( "seq", to.getSeq() );
		
		return modelAndView;
	}
	
}

 

 

728x90
반응형
Comments