parameter, session

2024. 2. 16. 17:38Daily 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 (직접 주소 입력으로 두 경우 모두 확인)

  1. 로그인 시 ⇒ mypage.jsp
  2. 로그인 안된경우 ⇒ 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 처리

  1. main → main.jsp , LoginForm 링크
  2. loginForm → loginFor,.jsp ⇒ post 방식/ login 데이터 전달
  3. login > 파싱 id, passwd ⇒ request 에 xxx 키로 저장 ⇒ login.jsp 에서 로그인 됨 + id, pass 출력 , logout 링크
  4. logout ⇒ main.jsp (재요청)
  5.  
@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