<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="config"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 접두어 -->
<property name="prefix" value="/WEB-INF/views/"/>
<!-- 접미어 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
<%@ 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.jsp<br><br>
<form action="form_ok.do" method="get">
데이터 <input type="text" name="data1">
<input type="submit" value="전송">
</form>
<form action="form_ok.do" method="post">
데이터1 <input type="text" name="data1">
데이터2 <input type="text" name="data2">
<input type="submit" value="전송">
</form>
</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>
form_ok.jsp<br><br>
<%=(String)request.getParameter("data1") %>
<%=(String)request.getParameter("data2") %>
</body>
</html>
package config;
@Controller
public class ConfigController4 {
@RequestMapping("/form.do")
public ModelAndView handleReques1() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form");
return modelAndView;
}
// 이 부분은 수정하면서 실행
@GetMapping("/form_ok.do")
//@RequestMapping(value="/form_ok.do", method=RequestMethod.GET)
public ModelAndView form_ok_get() {
System.out.println("form_ok_get() 호출");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
return modelAndView;
}
@PostMapping("/form_ok.do")
//@RequestMapping(value="/form_ok.do", method=RequestMethod.POST)
public ModelAndView form_ok_post() {
System.out.println("form_ok_get() 호출");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
return modelAndView;
}
//
}
@RequestMapping(value="/form_ok.do")
public ModelAndView form_ok(HttpServletRequest request, HttpServletResponse response) {
System.out.println("form_ok() 호출 : " + request.getParameter("data"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
return modelAndView;
}
@RequestMapping(value="/form_ok.do")
public ModelAndView form_ok(String data1, String data2) {
System.out.println("form_ok() 호출 : " + data1);
System.out.println("form_ok() 호출 : " + data2);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
return modelAndView;
}
@RequestMapping(value="/form_ok.do")
public ModelAndView form_ok(@RequestParam("data1") String pdata1) {
// => 외부에선 data1로 내부에선 pdata1로 처리한다
//System.out.println("form_ok() 호출 : " + data1);
System.out.println("form_ok() 호출 : " + pdata1);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
return modelAndView;
}
@RequestMapping(value="/form_ok.do")
public String form_ok(HttpServletRequest request) {
request.setAttribute("data1", request.getParameter("data1"));
return "form_ok";
}
@RequestMapping(value="/form_ok.do")
public ModelAndView form_ok(HttpServletRequest request) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("form_ok");
modelAndView.addObject("data1", request.getParameter("data1"));
return modelAndView;
}
@RequestMapping(value="/form_ok.do")
public String form_ok(HttpServletRequest request, Model model) {
model.addAttribute("data1", request.getParameter("data1"));
model.addAttribute("data2", request.getParameter("data2"));
return "form_ok";
}
<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-4.3.xsd">
<bean name="/zipcode.do" class="model2.Zipcode"/>
<bean name="/zipcode_ok.do" class="model2.ZipcodeOk"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 접두어 -->
<property name="prefix" value="/WEB-INF/views/"/>
<!-- 접미어 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
package model1;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class ZipcodeTO {
private String zipcode;
private String sido;
private String gugun;
private String dong;
private String ri;
private String bunji;
}
package model1;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ZipcodeDAO {
private DataSource dataSource = null;
public ZipcodeDAO() {
// TODO Auto-generated constructor stub
try {
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
this.dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb2" );
} catch( NamingException e ) {
System.out.println( "[에러] " + e.getMessage() );
}
}
public ArrayList<ZipcodeTO> zipcodeList(String strDong) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeTO> lists = new ArrayList<>();
try {
conn = this.dataSource.getConnection();
String sql = "select zipcode, sido, gugun, dong, ri, bunji from zipcode where dong like ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, strDong + '%');
rs = pstmt.executeQuery();
while(rs.next()) {
ZipcodeTO to = new ZipcodeTO();
to.setZipcode(rs.getString("zipcode"));
to.setSido(rs.getString("sido"));
to.setGugun(rs.getString("gugun"));
to.setDong(rs.getString("dong"));
to.setRi(rs.getString("ri"));
to.setBunji(rs.getString("bunji"));
lists.add(to);
}
} catch( SQLException e ) {
System.out.println( "[에러] " + e.getMessage() );
} finally {
if( pstmt!= null ) try {pstmt.close();} catch(SQLException e) {}
if( rs != null ) try {rs.close();} catch(SQLException e) {}
if( conn != null ) try {conn.close();} catch(SQLException e) {}
}
return lists;
}
}
즉, Zipcode 클래스는 "/zipcode" URL로 요청이 들어왔을 때 "zipcode"라는 뷰 페이지를 반환하는 역할을 수행합니다.
package model2;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class Zipcode implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("Zipcode 호출");
return new ModelAndView("zipcode");
}
}
package model2;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import model1.ZipcodeDAO;
import model1.ZipcodeTO;
public class ZipcodeOk implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("ZipcodeOk 호출");
String strDong = request.getParameter("dong");
//System.out.println(strDong);
ZipcodeDAO dao = new ZipcodeDAO();
ArrayList<ZipcodeTO> lists = dao.zipcodeList(strDong);
//System.out.println(lists.size()); // 데이터 갯수 확인
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("zipcode_ok");
modelAndView.addObject("lists", lists);
return modelAndView;
}
}
즉, ZipcodeOk 클래스는 "/zipcode_ok" URL로 요청이 들어왔을 때 "zipcode_ok"라는 뷰 페이지를 반환하며, 해당 뷰 페이지에서는 우편번호 데이터를 이용하여 원하는 방식으로 화면에 표시될 수 있습니다.
<%@ 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.jsp<br><br>
<form action="zipcode_ok.do" method="post">
동이름 <input type="text" name="dong"/>
<input type="submit" value="검색"/>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model1.ZipcodeTO" %>
<%@ page import="model1.ZipcodeDAO" %>
<%@ page import="java.util.ArrayList" %>
<%
ArrayList<ZipcodeTO> lists = (ArrayList)request.getAttribute("lists");
StringBuilder sbHtml = new StringBuilder();
sbHtml.append("<table>");
for(ZipcodeTO to : lists) {
sbHtml.append("<tr>");
sbHtml.append("<td>" + to.getZipcode() + "</td>");
sbHtml.append("<td>" + to.getSido() + "</td>");
sbHtml.append("<td>" + to.getGugun() + "</td>");
sbHtml.append("<td>" + to.getDong() + "</td>");
sbHtml.append("<td>" + to.getRi() + "</td>");
sbHtml.append("<td>" + to.getBunji() + "</td>");
sbHtml.append("</tr>");
}
sbHtml.append("</table>");
%>
<%=sbHtml %>