webpage.xml에 추가
<beans:bean class="webspring.mainpage"></beans:bean>
🔽
- mainpage2. java
package webspring; @Controller public class mainpage2 { //@GetMapping("/admin/adminok.do") //기존 get - 무조건 get으로 날라와야함 @RequestMapping(value="/admin/adminok.do",method=RequestMethod.GET) public String adminok(HttpServletRequest req, Model m) { String pidx = req.getParameter("pidx"); // GetMapping : /adminok.do?pidx=10 으로 접속시 10 출력 System.out.println(pidx); return null; } }
- /admin/adminok.jsp => 얘는 실제로 만들어야함 (webapp에)
(mainpage2.java에서 가상의 경로를 정해줘서 동일한 경로의 jsp를 찾으니까!)/* 무것도 안적음 ^__^ */
@requestMapping(value="가상경로",method=RequestMethod.GET or POST)
: requestMapping 인데 get으로만 받고 싶을때
⚡ name값 전달
- mainpage2. java
package webspring; @Controller public class mainpage2 { @RequestMapping(value="/admin/telok.do",method=RequestMethod.POST) //@RequestParam(defaultValue="N",required = false) //혹시 값이 안넘어온다면 기본값은 "N" , 넘어온다면 넘어온 값 => if문 안써두댐 //required = false : 넘어와도 되고 안넘어와도 됨 public String telok(@RequestParam(defaultValue="N",required = false) String agree,String tel,String email[]) { System.out.println(tel); //입력한 값 출력됨 , 페이지는 404 뜸(telok.jsp가 없어서) //request 적지 않아도 name='tel'을 가져올 수 있음 System.out.println(email[0]); System.out.println(email[1]); System.out.println(agree); //원래 체크시 Y,미체크시 null 출력 -> Y,N으로 출력 return null; } }
=> requestParameter 사용하지 않아도 됨!!
10. Form에서 name값 전송시 Spring은 인자값으로 모든 핸들링이 가능함 @RequestMapping
=> 단점 : 인자값에 넣으면 필수로 값이 넘어와야함 (안넘어오면 error)
11. @RequestParam :
인자값에 적용하는 어노테이션이며 값이 없을 경우 defaultValue를 이용하여 기본 default값을 적용할수 있음
required : default 는 true임 (필수로 받겠다) , false : 받아도 되고 안받아도 됨
if문 안써도 됨!!
* name값을 배열로 받을 경우 필수로 값을 받겠다라는 어노테이션을 사용하지 못함!
- /admin/tel.jsp<body> <form id="frm" method="post" action="./telok.do"> 연락처 : <input type="text" name="tel"><br> 이메일 : <input type="text" name="email">@<input type="text" name="email"><br> 개인정보 동의함 : <input type="checkbox" name="agree" value="Y"><br> <input type="button" value="전송" onclick="telok()"> </form> </body> <script> function telok(){ frm.submit(); } </script>
🔽
⚡ JSTL 사용법
JSTL -> JSP 변수로 이관 불가능
JSP 변수 -> JSTL로 이관 가능 ? 가능..
[ javax.servlet ] 이 라이브러리 사용 (from pom.xml)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- JSTL(core) : JSTL 엔진-필수, JSTL(function)-선택 prefix는 내가 짓고싶은대로 작성하면 됨 --> <%@ taglib prefix="aaa" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <!-- jsp형태 --> <% String data[] = {"a1","a2","a3","a4"}; request.setAttribute("data_arr", data); int ea = data.length; %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL 사용법</title> </head> <body> <!-- JSTL : forEach 이용이 정석 (var : 값 , begin~end:시작~종료) --> <aaa:forEach var="no" begin="1" end="5"> ${no} </aaa:forEach> <!-- 12345 출력 --> <br><br><br> <!-- set(setAttribute의 약자)를 이용하여 JSTP에 있는 변수를 JSTL 변수값으로 변환 단점 : $ 때문에 jqeury와 충돌 => jquery 못씀! --> <aaa:set var="jstl_ea" value="<%=ea%>"></aaa:set> data의 총 갯수 : ${jstl_ea} <br><br><br> <!-- do에서 ArrayList로 배열을 이관했을 경우 1.forEach로 바로 받는 형태로 작업 (얘 추천 ) 2.JSP로 ArrayList 받은 후 JSTL로 set을 이용하여 전달하는 방식 배열 출력시 forEach의 기본은 int로 활용해야하며, String으로는 X String 배열을 사용하고싶은 경우 class배열을 활용하여 출력 또는 setAttribute를 이용해서 출력 배열 출력시 begin,end 사용 금지 - 배열 갯수만큼 알아서 돌아감 items : 배열데이터 전용 속성 --> <ol> <!-- 방법1 : JSP에 있는 변수를 JSTL items로 담아서 출력 => 권장 --> <aaa:forEach var="arr" items="<%=data%>"> <li>${arr}</li> </aaa:forEach> </ol> <ol> <!-- 방법2 : setAttribute를 이용하여 JSTL로 items에 값을 담아서 출력 --> <aaa:forEach var="arr" items="${data_arr}"> <li>${arr}</li> </aaa:forEach> </ol> </body> </html>
=> 요런식
JSTL은 (Javascript,ECMA, React..) 와 사용 jquery는 사용 X => $ 충돌
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#3-2 / coupon delete,update (spring + database) (0) | 2024.07.10 |
---|---|
#3-1 / coupon insert,select (spring + database) (0) | 2024.07.10 |
#2-2 / spring + database 연결,회원가입 JSTL+spring+Datasource (0) | 2024.07.09 |
#1-2 / @ , spring 규칙1 (0) | 2024.07.08 |
#1-1 / [Spring maven project] start, setting - 70% 세팅완... (0) | 2024.07.08 |