일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ThreadGroup()
- 스레드그룸
- InputDialog
- ObjectInputStream
- StringWriter
- sleep()메소드
- isinterrupted()
- MemoryStream
- 리눅스세팅
- StringReader
- 아이디중복
- interrupted()
- Linux셋팅
- 동기화
- 상관서브쿼리
- include 지시자
- char[] String 형변환
- Linux세팅
- String char[] 형변환
- 리눅스셋팅
- 메모리스트림
- first-child
- first-of-child
- include액션태그
- 상관 서브 쿼리
- Daemon()
- ID중복
- 표현 언어
- interrupt()
- include지시자
- Today
- Total
다연이네
[days04] JSP 기본 내장 객체 1. request 2. response 3. out 4. pageContext 5. application 본문
[days04] JSP 기본 내장 객체 1. request 2. response 3. out 4. pageContext 5. application
다연 2020. 12. 28. 21:43
JSP 기본 내장 객체 :
1. request
2. response
3. out
4. pageContext
5. application
out
버퍼 정보 확인
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<%
out.println("홍길동"); // \r\n 포함 (그러나 브라우저에선 <br>로 개행하기떄문에 개행은 안됨)
out.newLine(); // == \r\n
out.print("홍길동"); //미포함
%>
<h3>버퍼 정보 확인</h3>
>버퍼 크기 : <%=out.getBufferSize() %>kb<br>
>남은 크기 : <%=out.getRemaining() %>kb<br>
>auto flush : <%=out.isAutoFlush() %><br>
</body>
</html>
pageContext
1. JSP 기본 객체를 얻어올 수 있다. -- 커스텀 태그 구현
2. 속성 처리할 수 있다.
3. 페이지 흐름 제어할 수 있다.
4. 에러 데이터 구할 수 있다.
<body>
<h3>pageContext 기본 객체</h3>
<%
//request 기본 객체를 얻어오고자 한다면
//request.getParameter(); 바로 쓰면 되지만 특별한 경우 (커스텀 태그 만들때 등)
HttpServletRequest httpRequest = (HttpServletRequest)pageContext.getRequest();
//그러나 서블릿 열어보면 HttpServletRequest (ServletRequest이 부모)
//=>다운캐스팅 필요
//request.getParameter();와 동일
%>
동일여부 확인<%= request==httpRequest %> <br>
<%
out.append("홍길동");
out.append("<br>");
JspWriter httpOut = pageContext.getOut();
httpOut.append("김길동");
pageContext.getResponse(); //response 기본 객체
pageContext.getSession(); //session 기본객체
pageContext.getServletContext(); //servletContext 기본객체
pageContext.getServletConfig();
pageContext.getException();
pageContext.getPage(); //page 기본 객체
%>
</body>
application
- 모든 JSP 페이지는 하나의 application 기본 객체를 공유한다.
- 즉, 웹 사이트 전체에 application 공유 객체(공유 정보 쓰기/읽기)
- 초기 설정정보/서버정보 저장, 자원 읽어오기 가능
- DB 연결 정보 / 파일 저장 경로 / 로깅 설정 등 웹 사이트에 공통으로 사용할 초기 설정 정보를 저장
서블릿 규약은 웹 사이트(어플리케이션) 전체에 걸쳐서 사용할 수 있는 초기화 파라미터를 정의하고 있다.
WEB-INF\web.xml 파일(dd파일) 안에 <context-param> 태그를 사용해 초기화 파라미터 설정
web.xml
<!-- 웹사이트 전체에서 사용할 수 있는 초기화 파라미터 선언 => applicatiob 기본 객체를 통해 사용-->
<context-param>
<description>로그인 여부</description>
<param-name>logEnabled</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>디버깅 레벨</description>
<param-name>debugLevel</param-name>
<param-value>3</param-value>
</context-param>
<%@page import="java.util.Enumeration"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<h3>application 기본 객체</h3>
<h3>web.xml context-param 읽기</h3>
<%
Enumeration<String> en = application.getInitParameterNames();
while(en.hasMoreElements()){
String initParamName = en.nextElement();
%>
<li><%=initParamName %>-<%=application.getInitParameter(initParamName) %></li>
<%
}
%>
</body>
</html>
<h3>application 기본 객체 - 서버 정보 읽기</h3>
서버 정보 : <%=application.getServerInfo() %><br>
서블릿 규약 메이저 버전 : <%=application.getMajorVersion() %><br>
서블릿 규약 마이너 버전 : <%=application.getMinorVersion() %><br>
application.getRealPath(path) : 시스템 상의 실제 경로를 리턴하는 함수
실제 물리적인 경로를 톰캣 서버에 배포한 그 경로이다.
게시판 글쓰기 + 첨부파일(사진) 때 사용
<%
//URL - http://localhost:80/jspPro/days01/ex01.jsp
String path = "";
//C:\Class\JSPClass\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jspPro\
String path = "/days01"; //뒤에 days01까지 잡히게 됨
//C:\Class\JSPClass\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jspPro\days01
String path = "/"; //아무것도 안주나 /주나 똑같음
//C:\Class\JSPClass\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jspPro\
String contextPath = request.getContextPath();
// /jspPro
String realPath = application.getRealPath(path);
%>
<!-- C:\Class\JSPClass\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jspPro\ -->
<!-- 가상으로 이클립스 내부에 배포 경로
C:\apache-tomcat-8.5.60\webapps라고 이해
탐색기에 검색하보면 게시되어져있다 만든적도 없는데 (나중에 얘네 복사해서 직접 실제 서버에 붙혀넣기
-->
jspPro 웹사이트를 배포했다 가정하고
1) days01 폴더 안의 파일명을 select태그의 option으로 추가하자
2) select 태그의 한 옵션을 선택하면 해당 옵션의 이름을 가진 파일의 스크립트가 출력되도록 하자
<%@page import="java.io.BufferedReader"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.File"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
$("#file").change(function(event) {
$("#form1").submit();
});
$("#file").val("${empty param.file ? 'ex01.html' : param.file}");
});
</script>
</head>
<body>
<%
String path = "/days01"; //뒤에 days01까지 잡히게 됨
String realPath = application.getRealPath(path);
%>
<%=realPath %><br>
<br>
<%
File dir = new File(realPath);
File [] fileList = dir.listFiles();
%>
<form action="" id="form1" method="get">
<label>days01</label>
<br />
<select name="file" id="file">
<%
for(int i=0;i<fileList.length;i++){
%>
<option><%=fileList[i].getName() %></option>
<%
}
%>
</select>
</form>
<%
FileReader in = null;
BufferedReader br = null;
StringBuffer sb = new StringBuffer();
//?
//?file=파일명
String pFile = request.getParameter("file");
String file = pFile == null? "ex01.html":pFile;
String fileName = String.format("%s/%s",realPath, file);
try{
in = new FileReader(fileName);
br = new BufferedReader(in);
String line = null;
while((line=br.readLine())!=null){
sb.append(line+"\r\n"); //아님 여기 <br>추가해도 됨
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
in.close();
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
String content = sb.toString();
content = content.replaceAll("<","<") //태그로 인식 못하게
.replaceAll(">", ">")
.replaceAll("\r\n", "<br>");
%>
<div style = "border: solid 1px gray; padding: 5px; margin-top: 10px;">
<code>
<%=content %>
</code>
</div>
</body>
</html>
'JSP' 카테고리의 다른 글
[days05] JSP 예외처리 (0) | 2020.12.29 |
---|---|
[days04] 웹 어플리케이션의 4가지의 영역(scope) (0) | 2020.12.28 |
[days04] 출력 버퍼, 배포 (0) | 2020.12.28 |
[days04] 해당 사원 정보 테이블로 출력, 버튼 클릭시 사원번호 넘기기 (0) | 2020.12.28 |
[days04] accordion, tabs, select로 선택한 부서의 사원 정보 출력 (0) | 2020.12.28 |