2024. 2. 16. 17:38ㆍDaily Codig Reminder
Array
@RequestParam String[]
array로 출력하는 방법
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login() {
return "loginForm";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(LoginDTO dto) {
// System.out.println(dto.getUserid()+"\t"+ dto.getPasswd());
System.out.println(dto);
return "loginForm";
}
@RequestMapping(value = "/login2", method = RequestMethod.POST)
public String login2(@RequestParam String[] phone,
@RequestParam String[] chk) {
// System.out.println(dto.getUserid()+"\t"+ dto.getPasswd());
System.out.println(phone.length);
System.out.println(chk.length);
return "loginForm";
}
<form action="login3" method="Post">
post방식
아이디:<input type="text" name="userid"><br>
비밀번호:<input type="text" name="passwd"><br>
전화번호1:<input type="text" name="phone"><br>
전화번호2:<input type="text" name="phone"><br>
checkbox<input type="checkbox" name="chk" value="aa1">aa1<br>
checkbox<input type="checkbox" name="chk" value="aa2">aa2<br>
<input type="submit" value="로그인">
</form>
setgetCookie
set으로 cookie 를 설정하면 get 으로 나옴
@Controller
public class TestController {
@RequestMapping("/setCookie")
public String setCookie(HttpServletRequest request, HttpServletResponse response) {
Cookie c1 = new Cookie("myName", "홍길동");
Cookie c2 = new Cookie("age", "10");
Cookie c3 = new Cookie("favorite", "악기");
c1.setMaxAge(60*60);
c2.setMaxAge(60*60);
c3.setMaxAge(60*60);
response.addCookie(c1);
response.addCookie(c2);
response.addCookie(c3);
System.out.println("set Cookie========");
return "hello";
}
@RequestMapping("/getCookie")
public String getCookie (HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
System.out.println(cookie.getName()+"\t"+cookie.getValue());
}
return "hello";
}
set Cookie========
myName 홍길동
age 10
favorite 악기
@ModelAttribute
1. 리턴되는 객체에 xxx키 값 부여함, 이 객체를 다른 함수에서 사용할 수 있음
@Controller
public class TestController {
@ModelAttribute("xxx")//1. 리턴되는 객체에 xxx키 값 부여함, 이 객체를 다른 함수에서 사용할 수 있음
public ArrayList<String> getList(){
System.out.println("getList()=======================");
ArrayList<String> list= new ArrayList<String>();
list.add("홍길동1");
list.add("홍길동2");
list.add("홍길동3");
list.add("홍길동4");
return list;
}
@RequestMapping(value = "/aaa")
public String aaa(@ModelAttribute("xxx") ArrayList<String> list) {//"xxx"리스트를 매개변수로 받아서 사용
System.out.println("aaa 추가 요청 작업");
list.add("aaaa");
return "main2";
}
@RequestMapping(value = "/bbb")
public String bbb(@ModelAttribute("xxx") ArrayList<String> list) {//"xxx"리스트를 매개변수로 받아서 사용
System.out.println("bbb 추가 요청 작업");
list.add("bbb");
return "main2";
}
}
Map_Model, CharacterEncodingFilter
@Controller
public class TestController {
@RequestMapping(value = "/aaa", method = RequestMethod.GET )//get, post 둘다 처리
public String xxx(Model m) {//자주 사용함
m.addAttribute("username","홍길동"); //request.setAttribute 와 동일 => req.getAtt 로 사용
m.addAttribute("login",new LoginDTO("aaa","111"));// object 로 저장
return "main";
}
@RequestMapping(value = "/bbb", method = RequestMethod.GET )//get, post 둘다 처리
public String bbb(Map<String, String>map) {//자주 사용함
map.put("address","서울"); //request.setAttribute 와 동일 => req.getAtt 로 사용
map.put("username","홍길동");// object 로 저장
return "main2";
}
@RequestMapping(value = "/ccc", method = RequestMethod.GET )//get, post 둘다 처리
public String ccc(HttpServletRequest request) {//자주 사용함
request.setAttribute("username", "홍길동");//request.setAttribute 와 동일 => req.getAtt 로 사용
return "main";
}
}
<h1>Main2.jsp</h1>
<p>Address: ${address}</p>
<p>Username: ${username}</p>
<hr>
<%
// Using request.getAttribute
String addressFromRequest = (String) request.getAttribute("address");
String usernameFromRequest = (String) request.getAttribute("username");
%>
<p>Address using request.getAttribute: <%= addressFromRequest %></p>
<p>Username using request.getAttribute: <%= usernameFromRequest %></p>
CharacterEncodingFilter
한글처리 web.xml에 붙여넣기
<!-- post 한글 처리 -->
<filter>
<filter-name>filter</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>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/mypage (직접 주소 입력으로 두 경우 모두 확인)
- 로그인 시 ⇒ mypage.jsp
- 로그인 안된경우 ⇒ sysout 인증실패 출력 후
redirect 로 처리 ⇒ Loginform.jsp
@RequestMapping(value = "/mypage", method = RequestMethod.GET )//get, post 둘다 처리
public String mypage(HttpSession session) {//servlet과 동일
String nextpage = "mypage";
System.out.println("로그아웃됨");
if(session.getAttribute("login")==null) {
System.out.println("인증안됨====");
nextpage ="redirect:login";
}
return nextpage;
@RequestMapping(value = "/login", method = RequestMethod.GET )//get, post 둘다 처리
public String loginForm() {//servlet과 동일
System.out.println("/login 주소요청");
return "loginForm";//응답요청을 할 jsp 파일이름 test.jsp
}
//post 반식 한글처리 => filter 처리 web.xml
@RequestMapping(value = "/login", method = RequestMethod.POST )//get, post 둘다 처리
public String login(HttpServletRequest request,LoginDTO dto, HttpSession session) throws UnsupportedEncodingException{//servlet과 동일
//request.setCharacterEncoding(env);
System.out.println("/login"+dto);
session.setAttribute("login", dto);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping(value = "/logout", method = RequestMethod.GET )//get, post 둘다 처리
public String logout(HttpSession session) {//servlet과 동일
session.invalidate();
System.out.println("로그아웃됨");
return "redirect:login";// 중요 jsp 요청이 아닌 /login get 방식 다시 요청
//return "login"; //login.jsp
}
1-1 한글처리 web.xml 1-2 /main => main.jsp -> 로그인링크 /login-> loginForm.jsp, 회원가입링크:/member ->memberForm.jsp
2-1 main.jsp ->회원가입 클릭시 /member memberForm.jsp 2-2 memberForm.jsp => /member dto정보를 session에 정보저장
('홍길동', 1234)로 통일 ->main.jsp로 리다이렉트 -> /login -> loginForm.jsp
3-1 loginForm.jsp 로그인시 /login session에 저장된 id,pw 맞는지 확인 후 일치시 logined.jsp로 이동, 아닌 경우 loginForm.jsp로 이동 콘솔에 id일치 하지 않음 메세지출력
3-2 logined.jsp에서 session정보 추출 화면에 띄우기 로그아웃 /logout 링크 -> 세션정보 삭제 후 main.jsp 로 redirect
@RequestMapping(value = "/main", method = RequestMethod.GET)
public String main() {
return "main";
}
@RequestMapping(value="/member", method = RequestMethod.GET)
public String memberJoin() {
System.out.println("/member get=======" );
return "memberForm"; // /login get방식 다시 요청
}
@RequestMapping(value="/member", method = RequestMethod.POST)
public String memberJoin(LoginDTO dto, HttpSession session) {
System.out.println("/member Post=======" + dto);
session.setAttribute("member", dto);
return "redirect:login"; // /login get방식 다시 요청
}
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginForm() {
System.out.println("/login get=======");
return "loginForm";
}
returnType
@Controller
public class TestController {
@RequestMapping(value = "/aaa", method = RequestMethod.GET )//get, post 둘다 처리
public String aaa() {//servlet과 동일
System.out.println("/loaaa요청");
return "main";//응답요청을 할 jsp 파일이름 test.jsp
}
////2. b 주소 처리 ModelandView : main2.jsp => username : 홍길동 위임 브라우저에 출력
@RequestMapping(value = "/bbb", method = RequestMethod.GET )
public ModelAndView bbb() {
// 모델과 뷰를 생성하고 모델에 데이터 추가
ModelAndView mav = new ModelAndView();
mav.setViewName("main2"); // 뷰 이름 설정
mav.addObject("username", "홍길동"); // 모델에 데이터 추가
// ModelAndView 반환
return mav;
}
///3. /bbb2 주소 처리 : Model 객체 username :홍길동 위임 => main2.jsp 위임
@RequestMapping(value = "/bbb2", method = RequestMethod.GET )
public String bbb2(Model m) {
m.addAttribute("username","홍길동"); //request.setAttribute 와 동일 => req.getAtt 로 사용
m.addAttribute("login",new LoginDTO("aaa","111"));// object 로 저장
return "main2";
}
///4. /bbb2 주소 처리 : Model 객체 username :홍길동 위임 => main2.jsp 위임
@RequestMapping(value = "/bbb3", method = RequestMethod.GET )
public String bbb3(Model m) {
m.addAttribute("username","홍길동"); //request.setAttribute 와 동일 => req.getAtt 로 사용
return "redirect:aaa";
/// username 안뽑힘
}
//5. 권장하지않음
@RequestMapping(value = "/ccc", method = RequestMethod.GET )
public LoginDTO xxx() {
System.out.println("/ccc=============");
LoginDTO dto = new LoginDTO();
dto.setUserid("홍길동");
dto.setPasswd("1234");
return dto;
}
//6.<p>Passwd: ${xxx.passwd}</p>
@RequestMapping(value = "/ddd", method = RequestMethod.GET )
@ModelAttribute("xxx")//키값은 xxx가 됨
public LoginDTO xxx2() {
System.out.println("/ddd=============");
LoginDTO dto = new LoginDTO();
dto.setUserid("홍길동");
dto.setPasswd("1234");
return dto;
/// ddd.jsp 키값은 @ModelAttribute ("xxx") 키값은 xxx가 됨
}
//7.
@RequestMapping(value = "/eee", method = RequestMethod.GET )
@ModelAttribute("yyy")//키값은 xxx가 됨
public ArrayList<String> eee() {
System.out.println("/eee=============");
ArrayList<String> list = new ArrayList<String>();
list.add("홍길동 01");
list.add("홍길동 02");
list.add("홍길동 03");
return list;
/// eee.jsp ,키값은 yyy , stringList 다시 하기
}
//8. void => 모델과 뷰를 모두 안알려줌 view fff.jsp
@RequestMapping(value ="/fff" , method = RequestMethod.GET)
public void fff (HttpServletRequest request) {
request.setAttribute("username", "홍길동");
System.out.println("/fff ============");
}
//8. void => 모델과 뷰를 모두 안알려줌 view ggg.jsp
@RequestMapping(value ="/ggg" , method = RequestMethod.GET)
public void ggg (Model m) {
m.addAttribute("username","홍길동");
System.out.println("/ggg ============");
}
}
returnType_exam
-controller 함수들 void 처리
- main → main.jsp , LoginForm 링크
- loginForm → loginFor,.jsp ⇒ post 방식/ login 데이터 전달
- login > 파싱 id, passwd ⇒ request 에 xxx 키로 저장 ⇒ login.jsp 에서 로그인 됨 + id, pass 출력 , logout 링크
- logout ⇒ main.jsp (재요청)
@Controller
public class TestController {
@RequestMapping(value = "/main", method = RequestMethod.GET )//get, post 둘다 처리
public void main() {//servlet과 동일
System.out.println("/main() 함수");
}
@RequestMapping(value = "/loginForm", method = RequestMethod.GET )//get, post 둘다 처리
public void loginForm() {//servlet과 동일
System.out.println("/loginForm요청");
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ModelAttribute("xxx")
public LoginDTO login(LoginDTO dto) {
System.out.println("/login (POST) 요청");
return dto;
}
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public void logout(HttpSession session) {
System.out.println("/logout 요청");
// 여기서 로그아웃 처리 또는 필요한 작업 수행
}
에러만들기
@RequestMapping(value = "/aaa")//get, post 둘다 처리
public String xxx() {//servlet과 동일
if (true) throw new ArithmeticException("ArithmeticException 발생");
return "main";
}
@RequestMapping(value="/bbb")
public String bbb () {
if(true) throw new NullPointerException("NullPointerException 발생");
return "main";
}
// @ExceptionHandler({ArithmeticException.class, NullPointerException.class})
@ExceptionHandler({Exception.class})
public String errorPage() {
return "error";
}
jsp
<h1>
error
</h1>
iserrorPage ="true"설전<br>
<%= exception.getMessage() %><br>
<% out.print(exception.getMessage()); %>
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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="/WEB-INF/views"></context:component-scan>
<!-- Exception의 처리 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
<prop key="java.lang.NullPointerException">error</prop>
</props>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean class="com.controller.TestController" id="testController"></bean>
</beans>
'Daily Codig Reminder' 카테고리의 다른 글
@Reponsebody ,mybatis (0) | 2024.02.16 |
---|---|
handler, response, json (0) | 2024.02.16 |
parameter (1) | 2024.02.12 |
mybatis (1) | 2024.02.12 |
spring- jdbc (1) | 2024.02.08 |