http://mvnrepository.com/search?q=json+databind

Jackson Databind

다운로드 또는 복사

POM.XML ====== 아래 붙여넣고 저장

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

WebContent - WEB-INF - mvc-config.xml ======= 안에 아래 빈 추가 후 저장

<!-- JsonView -->

<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" id="jsonView">
<property value="text/html;charset=UTF-8" name="contentType"/>

</bean>

 

<bean id="beanNameResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="0"/>
</bean>

\\\\\\\\\\\\\\\\\\\\\\\\\\

 

 <c:forEach var="userDTO" items="${list}">
  <tr>
   <td>${userDTO.name }</td>
   <td>${userDTO.id }</td>
   <td>${userDTO.pwd }</td>
  </tr>
 </c:forEach>

 

ㄴ 삭제하여 스크립트에서 생성

 

/////////////////////////////////////////

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $.ajax({
  type :"POST",
  url : "/Chapter06_DynamicSpringMaven/user/userSelectList.do",
  //없음 data : {"id":$('#id').val()},//{변수명:값},//넘겨야할 데이터
  dataType : "json",      
  success : function(data){
   //list:[{"name":"코난","id":"conan","pwd":"111"},{},{}]
  //alert(JSON.stringify(data));
  
  $.each(data.list, function(index,items){
   $('<tr/>').append($('<td/>',{
    align: "center",
    text : items.name
   })).append($('<td/>'),{
    align: "center",
    text : items.id
   }).append($('<td/>'),{
    align: "center",
    text : items.pwd
   }).appendTo($('#userListTable'));
  });
  
  
  }
 
 });
 
});

 

</script>

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<style type="text/css">
#menu:link {color: black; text-decoration: none;}
#menu:visited {color: blue; text-decoration: none;}
#menu:hover {color: green; text-decoration: underline;}
#menu:active {color: gray; text-decoration: none;}


</style>


</head>
<body>
*** 메인화면 ***<br>
<a href="/Chapter06_DynamicSpringMaven/user/userInsertForm.do" id="menu">1. 입력 </a><br>
<a href="/Chapter06_DynamicSpringMaven/user/userSelect.do" id="menu">2. 출력 </a><br>
<a href="/Chapter06_DynamicSpringMaven/user/userUpdateInput.do" id="menu">3. 수정 </a><br>
<a href="/Chapter06_DynamicSpringMaven/user/userDeleteInput.do" id="menu">4. 삭제 </a>

 

</body>
</html>

 

/////////////////////////////////////////

 

package com.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
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.bind.annotation.ResponseBody;

import com.bean.UserDTO;
import com.dao.UserDAO;

 


//@Controller
@RequestMapping("/user")
@Component
public class UserControlloer {
 @Autowired
 private UserDAO userDAO;
 
 //http://localhost:9090/Chapter06_DynamicSpringMaven/main/index.do
 @RequestMapping(value="/index.do", method = RequestMethod.GET)  // get방식
 public String index() {
  return "/main/index";
 }
 
 
 @RequestMapping(value="/userInsertForm.do", method = RequestMethod.GET)  // get방식
 public String userInsertForm() {
  return "/user/userInsertForm";
 }
 
 @RequestMapping(value="/userInsert.do", method = RequestMethod.POST)  // post방식
 public String userInsert(@ModelAttribute UserDTO userDTO) {
  // DB
  userDAO.userInsert(userDTO);
  return "/user/userInsert";
 }
 
 
 @RequestMapping(value="/userSelect.do", method = RequestMethod.GET)  // get방식
 public String userSelect(Model model) {
  //DB
  List<UserDTO> list = userDAO.getUserList();
  model.addAttribute("list",list);
  return "/user/userSelect";
 }
 
 @RequestMapping(value="/userUpdateInput.do", method = RequestMethod.GET)  // get방식
 public String userUpdateInput() {
  return "/user/userUpdateInput";
 }
 
 
 @RequestMapping(value="/userUpdateForm.do", method = RequestMethod.GET)  // get방식
 public String userUpdateForm(@RequestParam String id, Model model) {
  //DB
  UserDTO userDTO = userDAO.getUser(id);
  
  model.addAttribute("userDTO", userDTO);
  return "/user/userUpdateForm";
 }
 
 @RequestMapping(value="/userUpdate.do", method = RequestMethod.POST)  //
 public String userUpdate(@ModelAttribute UserDTO userDTO) {
  userDAO.userUpdate(userDTO);
  return "/user/userUpdate";
 }
 
 
 @RequestMapping(value="/userDeleteInput.do", method = RequestMethod.GET)  // get방식
 public String userDeleteInput() {
  return "/user/userDeleteInput";
 }
 
 
 
 @RequestMapping(value="/userDelete.do", method = RequestMethod.GET)  //
 public String userDelete(@RequestParam String id) {
  userDAO.userDelete(id);
  return "/user/userDelete";
 }
 
 @RequestMapping(value="/checkId.do", method = RequestMethod.POST)  //
 public @ResponseBody String checkId(@RequestParam String id) {
  if(id.equals(""))
   return "empty";
  
  //DB
  
  UserDTO userDTO = userDAO.getUser(id);
  if(userDTO==null) return "non_exist";
  else return "exist";
  
  


 }
 
 

}
////////////////////////////////////

 

package com.dao;

 

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.bean.UserDTO;

@Component
@Transactional
public class UserDAOMybatis implements UserDAO {
 @Autowired
 private SqlSession sqlSession;

 @Override
 public void userInsert(UserDTO userDTO) {
  sqlSession.insert("userSQL.userInsert",userDTO);
  
 }
 @Override
 public List<UserDTO> getUserList() {
  return sqlSession.selectList("userSQL.getUserList");
 }

 

 @Override
 public UserDTO getUser(String id) {
  return sqlSession.selectOne("userSQL.getUser", id);
 }

 @Override
 public void userUpdate(UserDTO userDTO) {
  sqlSession.update("userSQL.userUpdate",userDTO);
 }

 @Override
 public void userDelete(String id) {
  sqlSession.delete("userSQL.userDelete",id);
  
 }

 

 

}

 

 

 

 

 

 

 

 

javascript 라이브러리 중 가장 많이 사용되는 jQuery

 

jQuery 다운로드

 jQuery는 javascript 라이브러리이기 때문에 프로젝트 내에서 호출하여 사용해야 한다.

제이쿼리를 사용하기 위해서는 크게 2가지 방법이 있다.

 jQuery 라이브러리를 다운로드하여 사용하거나 CDN(Content Delivery Network)을 이용하여 링크를 걸어서 사용하는 방법이다.

 

<script type="text/javascript">
$()     ->> $제이쿼리 표시 // ${} ->> EL임 헷갈리지말기!!

=====================================

<script type="text/javascript">
function checkUser(){
 if(document.userInsertForm.name.value=="")
  alert("이름을 입력하세요");
 else if(document.userInsertForm.id.value=="")
  alert("아이디를 입력하세요");
 else if(document.userInsertForm.pwd.value=="")
  alert("비밀번호를 입력하세요");
 else
  document.userInsertForm.submit();
}

</script>

 

 ================================위에 내용을 아래로 바꾸기

 </script><script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script>   // 기본 기능만있는 주소임
<script type="text/javascript">
$(document).ready(function(){});

</script>

=========================================================

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 if($('#name').val()=='')
  $('#nameDiv').text("이름입력").css("color","red").css("font-size","8pt");
 if($('#id').val()=='')
  $('#idDiv').text("아이디입력").css("color","black").css("font-size","8pt");
 if($('#pwd').val()=='')
  $('#pwdDiv').text("비번입력").css("color","black").css("font-size","8pt");
});

 

</script>


</head>
<body>
<form name="userInsertForm" action="/Chapter06_DynamicSpringMaven/user/userInsert.do" method="POST">


<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td align="center"> 이름</td>
<td><input type="text" id="name" ><br>
<div id="nameDiv" ></div>
</td>
</tr>

<tr>
<td align="center"> 아이디</td>
<td><input type="text" id="id"><br>
<div id="idDiv" ></div></td>
</tr>
<tr>
<td align="center"> 비밀번호</td>
<td><input type="password" id="pwd"><br>
<div id="pwdDiv" ></div></td>
</tr>

<tr>
<td align="center"> <input type="button" value="등록" > <input type=reset value="취소" > </td>
</tr>
</table>
</form>

</body>
</html>

================================ 글씨 입력시 히든처리

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript" src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 if($('#name').val()=='')
  $('#nameDiv').text("이름입력").css("color","red").css("font-size","8pt");
 if($('#id').val()=='')
  $('#idDiv').text("아이디입력").css("color","black").css("font-size","8pt");
 if($('#pwd').val()=='')
  $('#pwdDiv').text("비번입력").css("color","black").css("font-size","8pt");
 
    $('#name').keyup(function(){
     if($(this).val().length==0)
      $('#nameDiv').text("이름입력").css("color","red").css("font-size","8pt");
     else
      $('#nameDiv').text("");
    });
   
    $('#id').keyup(function(){
     if($(this).val().length==0)
      $('#idDiv').text("아이디입력").css("color","red").css("font-size","8pt");
     else
      $('#idDiv').text("");
    });
  
    $('#pwd').keyup(function(){
     if($(this).val().length==0)
      $('#pwdDiv').text("비번입력").css("color","red").css("font-size","8pt");
     else
      $('#pwdDiv').text("");
    });

});

</script>


</head>
<body>
<form name="userInsertForm" action="/Chapter06_DynamicSpringMaven/user/userInsert.do" method="POST">


<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td align="center"> 이름</td>
<td><input type="text" id="name" ><br>
<div id="nameDiv" ></div>
</td>
</tr>

<tr>
<td align="center"> 아이디</td>
<td><input type="text" id="id"><br>
<div id="idDiv" ></div></td>
</tr>
<tr>
<td align="center"> 비밀번호</td>
<td><input type="password" id="pwd"><br>
<div id="pwdDiv" ></div></td>
</tr>

<tr>
<td colspan=2 align="center"> <input type="button" value="등록" > <input type=reset value="취소" > </td>
</tr>
</table>
</form>

</body>
</html>

 

======================= 중복체크 추가

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="/Chapter06_1/sungJuk/result.do" method=post>
<!-- //<form action="http://localhost:9090/Chapter06_1/sungJuk/input.do" method=get> -->

<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td align="center"> 이름<input type=text name="name" > </td>
</tr>
<tr>
<td align="center"> 국어<input type=text name="kor"> </td>
</tr>
<tr>
<td align="center"> 영어<input type=text name="eng"> </td>
</tr>
<tr>
<td align="center"> 수학<input type=text name="mat"> </td>
</tr>
<tr>
<td align="center"> <input type=submit value="result"> <input type=reset value="취소" > </td>
</tr>
</table>
</form>

</body>
</html>

 

>>>>>controller

 

package com.controller;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.bean.SumDTO;
import com.bean.SungJukDTO;

@Controller
@Component
public class SungJukController {
 
 //http://localhost:9090/Chapter06_1/sungJuk/input.do
 @RequestMapping(value="/sungJuk/input.do", method = RequestMethod.GET)  // get방식
 public String input() {
  return "/sungJuk/input";
 }
 
 @RequestMapping(value="/sungJuk/result.do", method = RequestMethod.POST)  // get방식
 public String result(@ModelAttribute SungJukDTO sungJukDTO, ModelMap modelMap) {
  modelMap.put("sungJukDTO", sungJukDTO);
  return "/sungJuk/result";
 }

}

 

>>>> post 방식 한글 깨짐 처리

 

 
  <!--  스프링 파라메터로 한글을 넘길때 post 방식 한글 처리  -->
 
   <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>/*</url-pattern>
 </filter-mapping>

ㄴ 위에 내용을 web.xml 삽입

 

>>> web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Chapter06_1</display-name>
 
 
  <servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  
  <!--
    스프링 설정 파일 :
   /WEB-INF/dispatcher-servlet.xml
    WAC의 이름 또는 위치를 바꾸고 싶을때
   -->
  
    <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
   /WEB-INF/mvc-config.xml
   /WEB-INF/dispatcher-config.xml

   </param-value>
   </init-param>
  
  </servlet>
 


  
  <servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
 
 
  <!--  스프링 파라메터로 한글을 넘길때 post 방식 한글 처리  -->
 
   <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>/*</url-pattern>
 </filter-mapping>

 
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

        <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

 

<!-- 소수점 제외하기위해 #.##으로 처리 -->
<fmt:formatNumber pattern="#.##" value="${(sungJukDTO.kor + sungJukDTO.eng + sungJukDTO.mat)/3.0 }" ></fmt:formatNumber>

 

 

 

>>>>>> controller

package com.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
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;

import com.bean.SumDTO;
@Controller
public class SumController { //POJO형식 -> 순수한 자기만의 클래스 (extends implement 모두 안해줌)
 
 //http://localhost:9090/Chapter06_1/input.do
// @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
// public ModelAndView input() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/input");
//  return mav;
// }

 //리턴타입이 String이면 문자열이아니라 뷰이름으로 사용된다.
 //뷰이름이 아니라 실제 문자열로 리턴하고 싶을때는 @ResponseBody를 사용함
 @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
 public String input() {
  return "/sum/input";
 }
 
 
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public ModelAndView result() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/result");
//  return mav;
// }
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public ModelAndView result(@RequestParam int x, int y) {
//  
//  ModelAndView mav = new ModelAndView();
//  mav.addObject("x", x);
//  mav.addObject("y", y);
//  mav.setViewName("/sum/result");
//  return mav;
// }
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public String result(@RequestParam(required=false) String x, @RequestParam(required=false) String y, Model model) {
//  
//  if(x.equals("")) x="0";
//  if(y.equals("")) y="0";
//  
//  model.addAttribute("x", Integer.parseInt(x));
//  model.addAttribute("y", Integer.parseInt(y));
//  return "/sum/result";
// }
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public String result(@RequestParam Map<String, String> map, ModelMap modelMap) {
//   
//  modelMap.put("x", map.get("x"));
//  modelMap.put("y", map.get("y"));
//  return "/sum/result";
// }
// 
 
 @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
 public String result(@ModelAttribute SumDTO sumDTO, ModelMap modelMap) {
  modelMap.put("sumDTO", sumDTO);
  return "/sum/result";
 }
 
 

}
>>>>>>>>>>>>>>> result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- ${param.x } + ${param.y } = ${param.x + param.y} --%>
<%-- ${x } + ${y } = ${x+y } --%>
${sumDTO.x } + ${sumDTO.y } = ${sumDTO.x + sumDTO.y }
</body>
</html>

package com.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
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 SumController { //POJO형식 -> 순수한 자기만의 클래스 (extends implement 모두 안해줌)
 
 //http://localhost:9090/Chapter06_1/input.do
// @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
// public ModelAndView input() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/input");
//  return mav;
// }

 //리턴타입이 String이면 문자열이아니라 뷰이름으로 사용된다.
 //뷰이름이 아니라 실제 문자열로 리턴하고 싶을때는 @ResponseBody를 사용함
 @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
 public String input() {
  return "/sum/input";
 }
 
 
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public ModelAndView result() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/result");
//  return mav;
// }
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public ModelAndView result(@RequestParam int x, int y) {
//  
//  ModelAndView mav = new ModelAndView();
//  mav.addObject("x", x);
//  mav.addObject("y", y);
//  mav.setViewName("/sum/result");
//  return mav;
// }
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public String result(@RequestParam(required=false) String x, @RequestParam(required=false) String y, Model model) {
//  
//  if(x.equals("")) x="0";
//  if(y.equals("")) y="0";
//  
//  model.addAttribute("x", Integer.parseInt(x));
//  model.addAttribute("y", Integer.parseInt(y));
//  return "/sum/result";
// }
 
 @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
 public String result(@RequestParam Map<String, String> map, ModelMap modelMap) {
   
  modelMap.put("x", map.get("x"));
  modelMap.put("y", map.get("y"));
  return "/sum/result";
 }
 
 

}

 

>>> controller

package com.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
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 SumController { //POJO형식 -> 순수한 자기만의 클래스 (extends implement 모두 안해줌)
 
 //http://localhost:9090/Chapter06_1/input.do
// @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
// public ModelAndView input() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/input");
//  return mav;
// }

 //리턴타입이 String이면 문자열이아니라 뷰이름으로 사용된다.
 //뷰이름이 아니라 실제 문자열로 리턴하고 싶을때는 @ResponseBody를 사용함
 @RequestMapping(value="/input.do", method = RequestMethod.GET)  // get방식
 public String input() {
  return "/sum/input";
 }
 
 
 
// @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
// public ModelAndView result() {
//  ModelAndView mav = new ModelAndView();
//  mav.setViewName("/sum/result");
//  return mav;
// }
 
 @RequestMapping(value="/result.do", method = RequestMethod.GET)  // get방식
 public ModelAndView result(@RequestParam int x, int y) {
  
  ModelAndView mav = new ModelAndView();
  mav.addObject("x", x);
  mav.addObject("y", y);
  mav.setViewName("/sum/result");
  return mav;
 }
 
 

}

 

>>>> result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- ${param.x } + ${param.y } = ${param.x + param.y} --%>
${x } + ${x } = ${x+y }
</body>
</html>


 

# 루트 WAC(Web Application Context) 등록
  스프링 Application의 애플리케이션 컨텍스트에는 두가지가 있다.
 
  1. ContextLoaderListener가 생성하는 Root WAC : 웹환경과 독립적인 빈 등록
      디폴트 설정 파일 /WEB-INF/applicationContext.xml 으로 설정된다
      서비스계층과 데이터 액세스 계층을 포함해서 웹환경과 직접 관련이 없는 모든 빈들을 여기에 등록한다
 
 → 만약에 사용할 이름이 다르거나 설정파일이 여러개인 경우
      contextConfigLocation 파라미터를 추가해서 설정해주면 된다

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/config/application-config.xml</param-value>
 </context-param>
     

  2. DispatcherServlet이 생성하는 WAC : DispatcherServlet이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록
      디폴트 설정 파일 /WEB-INF/서블릿이름-servlet.xml으로 설정된다
  
  → 만약에 사용할 이름이 다르거나 설정파일이 여러개인 경우
      contextConfigLocation 파라미터를 추가해서 설정해주면 된다

<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/dispatcher-config.xml</param-value>
   </init-param>
</servlet>
<servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>*.do</url-pattern>
</servlet-mapping>    

기존에는 공식사이트에서 zip 압축파일을  받아 jar를 구했는데 지금 사이트에서 Maven, Gradle로 라이브러리를 받게 끔 하고 있다
메이븐을 이용하지 않고 직접 라이브러리르 다운로드 하자

http://spring.io

http://maven.springframework.org/release/org/springframework/spring


# 스프링 설치
1. spring-framework-4.3.10.RELEASE-dist.zip 다운로드
2. 압축풀기


# 스프링 편집기
1. STS(Spring Tool Suite) 다운받아서 설치
2. Eclipse에서 Help → Eclipse Marketplace → STS(검색 - Eclipse 버젼 비교)


# commons-logging-1.2-bin.zip 다운로드
http://commons.apache.org/logging/download_logging.cgi


---------------------------------------------------
메소드에서 사용되는 클래스가 어떤것이든지 간에 전달인자로 클래스의 고유명을 코딩하지 않고 인터페이스를 기술하여 메소드를 정의한다.
이 메소드에 전달될 인스턴스는 스프링 설정 파일에서 결정하도록 하고, 다양한 클래스에 대해서 테스트할 경우에는 스프링 설정 파일을 변경하여 클래스 사이의 결합 상태를 느슨하게 한다.


인터페이스 베이스 설계와 스프링을 활용함으로써 소스 파일은 변경하지 않고 스프링 설정 파일만 변경해서 다양한 객체를 생성하는 변경이 유연한 어플리케이션을 작성할 수 있게 되었다.


☆ 스프링을 사용하는 이유는 "필요한 인스턴스를 스프링에서 미리 생성해 준다" 라는 장점을 얻을 수 있다.

☆ 스프링은 자주 변경이 되거나 컴포넌트의 재활용이 높은 유연한 어플리케이션을 작성할 수 있게하며 테스트도 쉽다.

☆ 스프링은 프레임워크지만 스트럿츠처럼 웹 어플리케이션 전용의 프레임워크와는 다른 특징이 있다

- 스프링은 '어플리케이션 프레임워크'로 불린다
  콘솔 어플리케이션나 스윙과 같은 GUI 어플리케이션등 어떤 어플리케이션에도 적용 가능한 프레임워크이다.

- 스프링은 EJB와 같이 복잡한 순서를 거치지 않아도 간단하게 이용할 수 있기 때문에 "경량 컨테이너" 라고 부른다.

- 스프링은 Dependency Injection(DI)와 Aspect Oriented Programming(AOP)을 가장 중점적인 기술로 사용하지만 여러가지 기능도 제공하고 있다.

☆  스프링은 크게 나눠 7개 모듈로 구성되어 있으며, 필요에 따라 이들을 서로 조합하여 사용할 수 있다
- Spring Core
- Spring AOP
- Spring ORM
- Spring DAO
- Spring Web
- Spring Context
- Spring Web MVC

---------------------------------------------------
[실습]
http://www.mvnrepository.com

Project : Chapter01 (Spring Legacy Project)
Project : Chapter01_Dynamic (Dynamic Web Project)

Project : Chapter01_Maven
Spring Legacy Project - Simple Java - Finish
우클릭 - Configure - Convert to Maven Project

Project : Chapter01_SpringMaven
Spring Legacy Project - Simple Spring Maven - Finish
우클릭 - Maven - Update Project


Project : Chapter01
Package : sample01
Class   : HelloSpring - main()
          MessageBean

Package   : sample02
Interface : MessageBean
Class     : HelloSpring - main()
            MessageBeanKo
            MessageBeanEn

Package   : sample03
Interface : MessageBean
Class     : HelloSpring - main()
            MessageBeanKo
            MessageBeanEn
src       : applicationContext.xml


Package : sample04
Interface : Calc.java
추상Method : public void calculate(int x, int y);
Class      : HelloSpring - main()
             CalcAdd.java
             CalcMul.java

[실행결과]
25 + 36 = xx
25 * 36 = xxx


Package : sample05

-----------------------------------
# 사용자 라이브러리 작성

[1] 첫번째 방법
User Library : lib

Project에서 우클릭
   ↓
Build Path
   ↓
Configure Build Path...
   ↓
Libraries(3번째 탭)
   ↓
Add Library...클릭
   ↓
User Library
   ↓
User Libraries...클릭
   ↓
New...
   ↓
User library name : 이름넣기
   ↓
OK
   ↓
Add External JARs...
   ↓
jar 선택
   ↓
  OK

//--------------------------------
# 사용자 라이브러리 작성
 
[2] 두번째 방법

먼저 lib 폴더를 만들고 lib폴더안에 필요한 jar를 복사한다
lib폴더의 복사한 모든 파일을 선택하고 우클릭 - Build Path - Add to Build Path

-----------------------------------
commons-logging-1.2.jar

spring-aop-4.3.6.RELEASE.jar
spring-beans-4.3.6.RELEASE.jar
spring-context-4.3.6.RELEASE.jar
spring-core-4.3.6.RELEASE.jar
spring-expression-4.3.6.RELEASE.jar
-----------------------------------

 

 

 

 

 

+ Recent posts