<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 이 되어 있어 설정을 해 줘야 합니다
<%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 은 바뀌지 않지만 값은 날라가요~
<%
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() 입니다
<%
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("/")%> = = 프로젝트의 절대경로를 얻어와요~
<%
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/>");
}
%>
로 하면 자동으로 절대경로를 찾아요~
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/>");
%>