반응형
*Controller 만들기
-
//=class
-
method로 요청 처리
@Controller
public class XxxController{
@RequestMappein(value="/요청이름.do" , method(요청이름에 대한 요청방식)=RequestMethod.GET|POST) //URL이 변경되지 않는 forward방식
public String method명(하는일의 이름으로 해야 구별 쉬움)(매개변수-파라메터를 받을 목적){
//method가 public이 아니면 밖에서 부를 수 없음
return "응답할페이지명" //String타고 나가면서 VIewResolver=>기본이 forward방식으로 호출됨. (Request.setAttribute에 넣으면 이동할 페이지에서 받아사용O)
//WEB-INF/views(prifix)/a.jsp(Suffix)=>.Servlet_context.xml
//a=>Controller에서 전달한 값, Web Parameter 값 =>EL을 사용하면 편리. ${param.이름}
}
}
//Spring은 Contrainer에 의존적이지 않음
//특정언어에 귀속되는 걸 쓰지 않아야한다 HTTPServletRequet같은거 X
//Spring framework를 4대로 업글할예정
//pom.xml내용을 덮어 복붙 저장
//설치
*Web Parameter 처리
-
HttpServletRequest 사용
-
기존의 문법 그대로 사용 가능
-
request.getparameter("이름")
-
request.getParameterValues("이름")
-
//=>권장하지 않는다. 들어가면 자바EE 특정객체에 완전히 귀속되어 단위테스트를 하려면 컨테이너가 필요해 지기 때문.
-
=>권장x -단위테스트 불편함(반드시 Container 필요,Container에 배포)
-
//우리의 Container는 Tomcat
-
@RequestParam( )
-
public String method(HttpServletRequest request){
-
request.getparameter("이름") |
-
request.getParameterValues("이름")
-
}
-
자바 데이터형 : String
-
Web Parameter 가 하나일 때.
-
//class는 - 사용자정의 데이터형 / 참조형데이터형
-
주의 할것) 매개변수명과 웹파라메터가 동일해야 한다.
-
@RequestParam( )
-
Public String method(string name) {
-
}
-
<form ...>
-
<input type="text" name="name"/> //이 name가 String name 타고 들어감
-
</form>
-
또는
-
<a href="x.do?name="name">00</a> //이 name가 String name 타고 들어감
-
//하나로 다닐일이 없어 잘 안쓰게됨(하나의 데이터 형으로 이름을 맞추어 주는것 하난데 vo만들기 귀찮으니까)
-
//썻던거라는 장점이 있지만 POJO가 깨져 권장x
-
VO
-
Web Parameter가 여러개일 때.
-
//주로 아래의 두가지를 권장함. 단위테스트의 편리함 POJO형식의 클래스가 된다.(Plain Old Java Object - 순수하게 자바SE기술만 써서 만든것)
-
//순수한 Java 기술로만 작성하는 클래스 (어디에도 속하지 않는)=>HttpServletRequest는 JavaEE의 기술로 Se가 아니라 x
-
//단위테스트가 편리
-
주의 할 것) VO의 instance 변수명과 Web Parameter명이 일치해야 받을 수 있다. (이름이 같으면 배열을 만들면 됨)
-
<a href='x.do?name=이재현&age=27">
-
-
public class VO{
-
private String name;
-
private int age;
-
...
-
}//pasint안써도 친절히 넣어줌..
-
-
@RequestMapping( )
-
public String method (vo v){
-
v.getName(); //이재현이 타고 들어와 나옴
-
v.getAge(); //27이 타고 들어오게 됨
-
}//가장권장하고 가장많이 쓰게됨
//index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
location.href="index.do";
</script>
</head>
<body>
</body>
</html>
//MainController.java
package kr.co.sist.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
@Controller
public class MainController {
@RequestMapping(value="/index.do", method=GET)
public String indexPage() {
return "index";
}//indexPage
@RequestMapping(value="/request_get.do", method=GET)
public String requestGet() {
return "get";
}//requestGet
@RequestMapping(value="/request_post.do", method=POST)
public String requestPost() {
return "post";
}//requestPost
//하나의 요청(method)처리 method가 GET/POST 방식을 모두 처리해야할 때
//method를 배열로 처리한다. emthod={GET,POST}
@RequestMapping(value="/request_all.do", method= {GET, POST})
public String requestAll() {
return "all";
}//requestAll
}//class
//index.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//get.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
GET방식으로 요청된 페이지(공통부분은 import)<br/>
요청 방식 : <%=request.getMethod() %>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//post.jsp
<div id="container">
POST방식으로 요청된 페이지<br/>
요청 방식 : <%=request.getMethod() %>
</div>
//all.jsp
<div id="container">
모든 요청 방식을 처리하는 페이지<br/>
요청 방식 : <%=request.getMethod() %>
</div>
*Controller에서 JSP로 값 전달
-
HttpServletRequest
-
request.setAttribute("이름", 값);
-
Model(interface)(권장)
-
객체화를 Framework가 하여 Arguments로 입력해준다.
-
service객체가 업무처리한 결과를 jsp로 보낼때 사용. scope객체일을 함(request, session의 일)
-
ModelAndView(class)
-
public class Controller{
-
@RequestMapping(..)
-
public String method(Model m){ //1.모델을 parameter로 선언
-
//2.값(service에서 업무처리한 결과 값)을 추가
-
//게시판에서 시작과끝을 처리했으면(service) model에 주고 jsp에 뿌려
-
//파라미터는 vo + 값을 넘겨야 되면 model
-
m.addAttribute("이름", 값); //jsp에서는 EL로 가져다 쓴다.. ${이름} | ${requestScope.이름}
-
//내가 객체화를 해야해서 권장하지 않음?
-
}
//ParamController.java
package kr.co.sist.controller.webparam;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.co.sist.vo.ParamVO;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
@Controller
public class ParamController {
//GET 방식으로 요청을 처리할 때에는 URL만 넣어도 된다.
//value="URL", method=RequestMethod.GET)
@RequestMapping(value="/request_form.do")
public String requestForm() {
return "param/request_form";
}//requestForm
@RequestMapping(value="/use_request_process.do", method=GET)
//HttpServletRequest를 사용한 파라메터 처리 : 권장x
public String requestFormProcess(HttpServletRequest request) {
String name=request.getParameter("name");
String age=request.getParameter("age");
String[] lang=request.getParameterValues("lang");
System.out.println(name+"/"+age+"/"+Arrays.toString(lang));
request.setAttribute("lang", lang);
return "param/request_process";
}//requestFormProcess
@RequestMapping("/vo_form.do")
public String voForm() {
return "param/vo_form";
}//voForm
//vo를 사용한 Parameter 처리
@RequestMapping(value="/vo_process.do", method=GET)
public String voProcess(ParamVO pv, Model m) {
m.addAttribute("langData", pv.getLang()); //이 값은 JSP로 전달된다.포워드형식으로
m.addAttribute("nameData", pv.getName()); //이 값은 JSP로 전달된다.포워드형식으로
m.addAttribute("ageData", pv.getAge()); //이 값은 JSP로 전달된다.포워드형식으로
//객체화를 프레임워크가 해주고 서비스는 내가 함..DI배우면 서비스객체화 내가x
//System.out.println("----"+pv);
return "param/vo_process";
}//voProcess
}//class
//request_form.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="../common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
<form action="use_request_process.do">
<label>이름</label>
<input type="text" name="name" class="inputBox"/><br/>
<label>나이</label>
<input type="text" name="age" class="inputBox"/><br/>
<label>관심언어</label><br/>
<input type="checkbox" name="lang" value="Java"/>Java<br/>
<input type="checkbox" name="lang" value="C/C++"/>C/C++<br/>
<input type="checkbox" name="lang" value="Python"/>Python<br/>
<input type="checkbox" name="lang" value="VB"/>VB<br/>
<input type="submit" value="전송" class="btn"/>
</form>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//request_process.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="../common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
<ul>
<li>${param.name}님 안녕하세요?</li>
<li>${param.age}살</li>
<li>
<c:if test="${empty param.lang}">관심언어가 없습니다.</c:if>
<c:forEach var="lang" items="${requestScope.lang}">
<c:out value="${lang}"/>
</c:forEach>
</li>
<li>
<a href="#void" onclick="history.back()">다시입력</a>
<a href="#void" onclick="location.href='request_form.do'">다시입력</a>
</li>
</ul>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//ParamVO.java
package kr.co.sist.vo;
import java.util.Arrays;
public class ParamVO {
private String name;
private int age;
private String[] lang;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getLang() {
return lang;
}
public void setLang(String[] lang) {
this.lang = lang;
}
@Override
public String toString() {
return "ParamVO [name=" + name + ", age=" + age + ", lang=" + Arrays.toString(lang) + "]";
}
}//class
//vo_process.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="../common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
<ul>
<li>VO 값 처리</li>
<li>${param.name}(${nameData})님 안녕하세요?</li>
<li>${param.age}(${ageData})살</li>
<li>
<c:if test="${empty langData}">관심언어가 없습니다.</c:if>
<c:forEach var="lang" items="${requestScope.langData}">
<c:out value="${lang}"/>
</c:forEach>
</li>
<li>
<a href="#void" onclick="history.back()">다시입력</a>
<a href="#void" onclick="location.href='vo_form.do'">다시입력</a>
</li>
</ul>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//vo_form.jsp
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/jsp_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; min-height: 600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
});//ready
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
<div style="padding-top:100px; ">
<c:import url="../common/jsp/main_menu.jsp"></c:import>
</div>
</div>
<div id="container">
<form action="vo_process.do">
<label>이름</label>
<input type="text" name="name" class="inputBox"/><br/>
<label>나이</label>
<input type="text" name="age" class="inputBox"/><br/>
<label>관심언어</label>
<input type="checkbox" name="lang" value="Java"/>Java
<input type="checkbox" name="lang" value="C/C++"/>C/C++
<input type="checkbox" name="lang" value="Python"/>Python
<input type="checkbox" name="lang" value/>VB
<br/>
<input type="submit" value="전송"/>
</form>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
//main_menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- smartmenu 시작 -->
<!-- SmartMenus core CSS (required) -->
<link href="http://localhost:8080/mybatis_prj/common/smartmenu/css/sm-core-css.css" rel="stylesheet" type="text/css" />
<!-- "sm-blue" menu theme (optional, you can use your own CSS, too) -->
<link href="http://localhost:8080/mybatis_prj/common/smartmenu/css/sm-simple/sm-simple.css" rel="stylesheet" type="text/css" />
<!-- jQuery -->
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> -->
<!-- SmartMenus jQuery plugin -->
<script type="text/javascript" src="http://localhost:8080/mybatis_prj/common/smartmenu/jquery.smartmenus.js"></script>
<!-- SmartMenus jQuery init -->
<script type="text/javascript">
$(function() {
$('#main-menu').smartmenus({
subMenusSubOffsetX: 1,
subMenusSubOffsetY: -8
});
});
function requestAll(){
var method="";
if(confirm("GET방식으로 요청 하시겠습니까?")){
method="GET";
}else{
alert("POST방식으로 요청합니다.");
method="POST";
}//end else
document.hidFrm.action="request_all.do"
document.hidFrm.method=method;
document.hidFrm.submit();
}//requestAll
function sendPost(){
//chrome은 javaScript에서 action을 변경하면 form의 actino이 계속 유지된다.
document.hidFrm.action="request_post.do"
document.hidFrm.submit();
}//sendPost
</script>
<form action="request_post.do" name="hidFrm" id="hidFrm" method="post"></form>
<!-- smartmenu 끝 -->
<nav id="main-nav">
<!-- Sample menu definition -->
<ul id="main-menu" class="sm sm-simple">
<li><a href="#void">홈으로</a></li>
<li><a href="#void">Spring MVC 사용</a>
<ul>
<li><a href="#void">1일차</a>
<ul>
<li><a href="request_get.do">GET방식 요청</a></li>
<li><a href="#void" onclick="sendPost()">POST방식 요청</a></li>
<li><a href="#void" onclick="requestAll()">GET/POST모두 요청</a></li>
<li><a href="request_form.do">HttpServletRequest로 파라메터 처리</a></li>
<li><a href="vo_form.do">VO로 파라메터 처리</a></li>
</ul>
</li>
</ul>
<li><a href="#">동기방식 차량조회</a></li>
</ul>
</nav>
반응형
'국비지원학원 > Spring Framework' 카테고리의 다른 글
126일차-Spring AOP~127일차-AOP (0) | 2019.08.24 |
---|---|
118일차-Spring Framework~125일차-ORM (0) | 2019.08.24 |
116일차-Spring Framework설명 (0) | 2019.04.30 |