Develop/JavaScript JQuery JSP

0711 JSP 2일차

포페PostFace 2022. 7. 15. 17:30

request.getParameterValues

체크박스 등의 중복 선택이 가능한 
즉, 다수의 값이 리턴 가능한 값을
배열 형태로 받는 메소드다.

만약 무결성 검사를 하지 않았거나 혹은
하나도 리턴값이 없어도 되는 값을 받을때
리턴값이 하나도 없으면 
NullPointerException 에러가 나기 때문에
조건문을 통해 Array != null임을 확인하는게 좋다.

request.getParameterNames()
작성 페이지에서 이름만 가져오는 메소드
Enumeration, 열거형으로 받는다.

request.getParameterNames를 활용해 
while문으로 출력하기

Enumeration<String> names= request.getParameterNames();

while(names.hasMoreElements()){
	String name=names.nextElement();
	String[] arr= request.getParameterValues(name);
	out.print(name+ ":  ");
		for(int i=0;i<arr.length;i++){
			out.print(arr[i]+" ");
		}			
		out.print("<br>");
}




response : 내장객체중 하나
response.sendRedirect() :
현재 페이지를 건너뛰고 빠르게 해당 위치로 이동한다.(웹브라우저 출력=X 콘솔창 출력=O)

FORM
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    form.jsp <br>
    
<form action="response1.jsp"  method="post">
<input type = "text"  name="msg"  value="hello"><p>
<input type = "submit" value="전송">
</form>

RESPONSE1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
response1.jsp <br>
<%
//HttpServletRequest request=new HttpServletRequest();
//요청할 때마다 request 객체가 생성된다.
request.setCharacterEncoding("UTF-8");
String msg=request.getParameter("msg");
out.print("msg : "+msg);
System.out.println(msg);
//HttpServletResponse response= new HttpServletResponse();
response.sendRedirect("response2.jsp");
//현재 페이지를 건너뛰고 빠르게 해당 위치로 이동한다.(웹브라우저 출력=X 콘솔창 출력=O)
%>



RESPONSE2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
response2.jsp <br>
<%
request.setCharacterEncoding("UTF-8");
String msg2=request.getParameter("msg");
out.print("msg : "+msg2);
System.out.println(msg2);
%>



response.sendRedirect(); 를 통해 
페이지를 이동 할 수 있는데,
response2의 리퀘스트 객체는 null이 나온다.
즉 response1과 2는 리퀘스트 객체를 공유하지 않는다.

예) 회원가입 
1페이지에서 입력후 2페이지에서 데이터베이스에 등록을
하고 3페이지로 넘어가는데 사용자 입장에선 1에서 3으로
넘어가는것처럼 보인다.

굳이 정보를 넘기고 싶다면
response.sendRedirect("response2.jsp?msg="+msg);
이런식으로 다시 넘기고 요청 할 수 있다.
단, 한글은 안된다.

혹은 좀 귀찮지만 
form action="?" 밑에
<input type="hidden" name='msg' value='<%=msg%>' >
인풋 타입 hidden으로 같이 전송할 수 있다.
이건 한글도 된다.

혹은 세션 설정으로 보낼수도 있다.
2페이지
session.setAttribute("msg", msg); //속성명, 값 msg이름에 msg값
3페이지
String msg=(String)session.getAttribute("msg");

session.getAttribute는 오브젝트 타입으로 리턴하기 때문에
String타입으로 다운캐스팅 해주어야한다.



Session
내장객체의 일종.
세션은 웹브라우저당 하나만 만들어진다.
어떤 정보가 계속해서 유지되고 싶을 때 사용한다.
예)회원정보,장바구니 등.

Session의 유지시간
session은 언제까지나 유지되지 않는다.
기본은 30분 설정은 초단위로 할 수 있다.
session.setMaxInactiveInterval(10);

Session의 무효화
session.invalidate();
해당 파일에 오면 session설정이 무효화된다.
단 해당 코드 밑에 session을 호출하는 코드를 작성하면
에러가 나므로 주의해서 사용하자.

XML
확장 마크업 언어
내가 직접 태그를 만들어 사용하는듯한 방식

네임스페이스
동일한 이름의 태그 충돌을 막기위한 개념

<주문정보>
<고객>
<고객:고유번호></고객:고유번호>
<고객:이름></고객:이름>
</고객>
<상품>
<상품:고유번호></상품:고유번호>
<상품:이름></상품:이름>
</상품>
</주문정보>
이와 같이 이름과 고유번호라는 이름을 공유할때
서로 충돌하지 않기 위해 네임스페이스 : 태그이름
과 같은 방식으로 작성한다.
이렇게 사용하기 전에는 공간을 미리 만들어둬야한다.

include 지시어 : 외부파일 복사 붙여넣기 같은 효과
include 액션태그: 실행한 결과를 포함
request객체를 공유할 수 있다.

<!-- include 액션태그 : 실행한 결과를 포함 -->
<jsp:include page="Ex01_result.jsp"/>
안에 쓸게 없다면 엶과 동시에 닫아줄 수 있다.
(닫는 태그를 생략하고 여는 태그 끝에 /)


<jsp:include page="Ex01_result.jsp">
<jsp:param value="30" name="age"/>
</jsp:include> 


jsp:param 을 통해 해당 페이지에는 요청되지 않은
어떠한 이름과 값을 같이 전달할 수도 있다.

xml타입의 태그들 사이에는 주석을 달 수 없다.


ForwardActionTag
<jsp:forward page="Ex01_result.jsp"/>
이 태그가 있다면 해당 페이지는 거쳐지긴 하나
결과페이지를 바로 보여준다.
response.sendRedirect와 같은 기능을 한다.
그러나 차이는 forward action tag는 request객체를
공유한다.


response.sendRedirect
거쳐가는 페이지
request객체를 공유하지 않는다.
최종페이지와 주소가 같다.

ForwardActionTag
거쳐가는 페이지
request 객체를 공유한다.
최종페이지의 주소가 같진 않다.

<meta http-equiv="refresh" content="0; url=select.jsp"/>
메타 태그를 사용할 수도 있다.



JDBC 프로그래밍 단계
0.jar 파일 넣어놓기 
C:\Oracle\product\12.2.0\dbhome_1\jdbc\lib 에서
WEB-INF -lib 안에 넣기

1.드라이버 로드 Class.forName~
2.계정 접속 DriverManager.getConnection(id,pw,url);
3.sql문 작성/분석
4.sql문 실행
5.접속 끊기


<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
select.jsp
<% 
	String driver="oracle.jdbc.driver.OracleDriver";
	String url="jdbc:oracle:thin:@localhost:1521:orcl";
	String id="sqlid";
	String pw="sqlpw";
	Connection conn;
	
	//1.드라이버 로드
	Class.forName(driver);
	
	//2. 계정에 접속
	conn=DriverManager.getConnection(url,id,pw);
	
	//3.sql문 작성, 분석
	String sql="select * from register";
	PreparedStatement ps=conn.prepareStatement(sql);
	ResultSet rs=ps.executeQuery();
	%>
<table border='1' width='600'>
  	<tr>
    		<td>아이디</td>
    		<td>비밀번호</td>
    		<td>닉네임</td>
    		<td>성별</td>
    		<td>이메일</td>
  	</tr>

	<%
	while(rs.next()){
		String id2= rs.getString("id");
		String passwd= rs.getString("passwd");
		String name= rs.getString("name");
		String gender= rs.getString("gender");
		String uname= rs.getString("uname");
		String dname= rs.getString("dname");
		%>
		<tr>
    		<td><%=id2 %></td>
    		<td><%=passwd %></td>
    		<td><%=name %></td>
    		<td><%=gender %></td>
    		<td><%=uname %>@<%=dname %></td>
  		</tr>
<% 		
	}
	conn.close();
	
%>
</table>

'Develop > JavaScript JQuery JSP' 카테고리의 다른 글

0713~15 JSP JDBC 응용을 통해 테이블 작성  (0) 2022.07.15
0712 JSP 3일차  (0) 2022.07.15
0708 JQuery 마무리와 JSP Start!  (0) 2022.07.08
0707 AJAX JSON XML  (0) 2022.07.08
0706 JQuery  (0) 2022.07.06