form 태그에서 post 방식을 배웁니다

<form action="t2.jsp" method="post">
<input type="text" name="a" value="b"><br/>
<input type="text" name="c" value="d"><br/>
<input type="submit">
하면 url 에는 비밀스럽게 parameter가 날라가요~ 
아이디 , 비밀번호처럼 조심해야하는 정보를 날릴때 사용되요~

일반적으로 get 이 되어 있어 설정을 해 줘야 합니다

한글을 보낼때는 Encoding을 해줘야 해요~

<%request.setCharacterEncoding("utf-8");%> 받는 파일Encoding 해서 받겠다는 거에요~

그럼 보낼때 부터 Encoding 하려면 어떻게 해야 할까요?

<%
	String s= URLEncoder.encode("가나다","utf-8");
%>
<a href="t2.jsp?a=<%=s%>">연결</a>

화면이동 방법

1. <% response.sendRedirect("xxx.jsp"); %> 화면이동하면 url 이 바뀝니다
2. <jsp:forward page="xxx.jsp"/> url이 바뀌지 않아요~
3 <script>
  location.href="xxx.jsp"
  </script>

<jsp: forward page ="t2.jsp">
<jsp: param value ="abc" name="def"/>
</jsp:forward>
이렇게하면 url 은 바뀌지 않지만 값은 날라가요~

MemberBean 객체만들기

<%
	String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    String addr = request.getParameter("addr");
    String tel = request.getParameter("tel");
    MemberBean bean = new MemberBean
%>
java Resources 에서 src 파일에서 




자동으로 setter/getter가 만들어 졌어요~

<%
	String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    String addr = request.getParameter("addr");
    String tel = request.getParameter("tel");
    MemberBean bean = new MemberBean
    bean.setId(id);
    bean.setPw(pw);
    bean.setAddr(addr);
    bean.setTel(tel);
%>
<a href="t13.jsp?member=<%=bean%>">회원정보보기</a>
로 한번에 한 명의 정보를 보낼 수 있게 되었습니다~(bean을 보냈으니 주소값이 날라가요)

받는 파일에는 <%=request.getParameter("member")% 하면 받겠죠~

그런데! 아주 중요한 사실~~~!

클라이언트가 회원정보를 날리고 톰캣엔진이 작동해서 t1.jsp 가 실행되면
t1_jsp.java 를 만들어요~ -> 얘는 _jspService() 메소드를 가지고 있습니다.
<%%> 안에 있는 로직은 그대~~로 _jspService()로 들어갑니다
그럼 MemberBean bean = new MemberBean 가 들어가요~
bean 은 그럼 local 변수에요~즉 회원정보보기 라는 글자가 뜨는 순간 메소드는 끝이나고 bean은 더이상 존재하지 않아요~ 그럼 bean이 가진 주소값은 어떻게 될까요?
더이상 주소값이 아닌, 문자열이 되어 남아있습니다~
회원정보보기 를 누르면 bean의 주소값이 였던! 문자열이 날라갑니다

그럼 메소드가 끝나도 bean 객체가 메모리에 살아 있게 하려면 어떻게 해야 하나요~?

웹브라우저가 켜져 있는동안 계속 메모리에 남겨두는게 목적이에요
그걸 해주는게 session.setAttribute() 입니다

session.setAttribute()을 보아요

<%
	String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    String addr = request.getParameter("addr");
    String tel = request.getParameter("tel");
    MemberBean bean = new MemberBean
    bean.setId(id);
    bean.setPw(pw);
    bean.setAddr(addr);
    bean.setTel(tel);
    session.setAttribute("member",bean);
%>
<a href="t13.jsp?member=<%=bean%>">회원정보보기</a>

이렇게 하면 메쏘드가 끝나도 bean 객체는 유지됩니다~

그럼 메모리에 계속 남아 있으니 전달할 필요는 없어용~

<a href="t13.jsp"> 회원정보보기</a> 하면됩니다

그럼 불러오는 방법도 봐야 겠죠?

받는 파일.jsp에서
<%MemberBean bean =(MemberBean)session.getAttribute("member"); -> return 값이 Object입니다 %>
Id : <%=bean.getId()%>

application.getRealPath("/") 을 보아요~

<%=application.getRealPath("/")%> = = 프로젝트의 절대경로를 얻어와요~

<%
File f= new File("c:/dev/tomcat9/webapps/project3");
File[] list =f.listFiles();
for(File ff : list){
	String fn = ff.getName();
    if(ff.isFile()){
    out.print("<a href="+fn+">");
    out.print(fn+"</a>");
    
    }else out.print(fn);
    out.print("<br/>"); 
}
%>
로 하면 유지보수가 불편하겠죠? 절대경로를 하나하나 바꿔야 할테니..
그래서

<%
_File f= new File(application.getRealPath("/"));_
File[] list =f.listFiles();
for(File ff : list){
	String fn = ff.getName();
    if(ff.isFile()){
    out.print("<a href="+fn+">");
    out.print(fn+"</a>");
    
    }else out.print(fn);
    out.print("<br/>"); 
}
%>
로 하면 자동으로 절대경로를 찾아요~

application 객체로 초기화 parameter 읽기

web.xml 을 수정하고 나선 꼭 껏다가 다시 켜야 돼요~
빠르게 재시작 하려면 localhost 에서 Manager App 으로 다시 리로드 하면 돼요~

aa 와 cc 를 읽어 오려면

<%=
application.getInitParameter("aa"); //bb
application.getInitParameter("cc"); //dd
%>
가 나옵니다
다른 방법으로는 

<%
	Enumeration<String> e = application.getInitParameterNames();
    while(e.hasMoreElements())
    out.print(e.nextElement()+"<br/>");
%>
profile
건물주가 되는 그날까지

0개의 댓글