반응형
목차
JSTL
- 커스텀 태그 중 가장 많이 사용되는 태그를 표준화하여 라이브러리로 제공하는 것
주로 사용하는 것
- if, foreach, url 정도
이름 띄워보기
package pro14;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class IndexServlet
*/
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 포워딩
request.setAttribute("name", "홍길동");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${name}
</body>
</html>
세션에 따른 로그인 유무 판별
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test = "${!empty loginSession}">
${ loginSession.name }님 안녕하세요
</c:if>
<c:if test = "${empty loginSession}">
로그인 정보가 없습니다.
</c:if>
</body>
</html>
package pro14;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberVO;
/**
* Servlet implementation class IndexServlet
*/
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 포워딩
request.setAttribute("name", "홍길동");
// 로그인 성공 후 MemberVO 객체 세션에 저장
MemberVO vo = new MemberVO();
vo.setName("김길동");
request.getSession().setAttribute("loginSession", vo);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
리스트 값 넣고 받아오기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test = "${!empty loginSession}">
${ loginSession.name }님 안녕하세요
</c:if>
<c:if test = "${empty loginSession}">
로그인 정보가 없습니다.
</c:if>
<hr>
<c:forEach var="member" items="${list }">
${member.name }<br>
</c:forEach>
</body>
</html>
이미지 가져오기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<img src = "<c:url value="/img/github.png"/>">
</body>
</html>
날짜, 숫자 포매팅
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
숫자 천단위 컴마 : <fmt:formatNumber value="${price} "></fmt:formatNumber><br>
날짜 : <fmt:formatDate value="${date }" pattern="YYYY-MM-dd" />
</body>
</html>
함수 호출
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import= "pro14.Function" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
숫자 천단위 컴마 : <fmt:formatNumber value="${price}"></fmt:formatNumber><br>
날짜 : <fmt:formatDate value="${date }" pattern="YYYY-MM-dd"/><br>
메서드 호출<br>
인스턴스 메서드 : ${func.result(60)};<br>
static 메서드 : ${Function.result2()};
</body>
</html>
package pro14;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberVO;
/**
* Servlet implementation class IndexServlet
*/
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("func", new Function());
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
}
package pro14;
public class Function {
public String result(int score) {
return score >= 60 ? "합격" : "불합격";
}
public static String result2() {
return "함수2 호출";
}
}
- 파일 업로드
package sec01.exam01;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet("/upload.do")
public class FileUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String encding = "utf-8";
File currentDirPath = new File("D:\\\\file_repo");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(currentDirPath);
factory.setSizeThreshold(1024*1024);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
for(int i = 0; i < items.size(); i++) {
FileItem fileItem = (FileItem)items.get(i);
if(fileItem.isFormField()) {
System.out.println(fileItem.getFieldName()+"="+fileItem.getString(encding));
}else {
System.out.println("매개변수이름"+fileItem.getFieldName());
System.out.println("파일 이름"+fileItem.getName());
System.out.println("파일 크기"+fileItem.getSize()+"bytes");
if(fileItem.getSize() > 0) {
int idx = fileItem.getName().lastIndexOf("\\\\");
if(idx == -1) {
idx = fileItem.getName().lastIndexOf("/");
}
String fileName = fileItem.getName().substring(idx + 1);
File uploadFile = new File(currentDirPath + "\\\\" +fileName);
fileItem.write(uploadFile);
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
DB에서 가져와 테이블 형태로 출력하기
package member;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class MemberDAO {
private PreparedStatement pstmt;
private Statement stmt;
private Connection con;
// private String driver = "oracle.jdbc.OracleDriver";
// private String url = "jdbc:oracle:thin:@localhost:1521/xe";
// private String user = "testuser";
// private String pwd = "test1234";
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
dataFactory = (DataSource)envContext.lookup("jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
public List<MemberVO> listMembers() {
List<MemberVO> list = new ArrayList<>();
try {
// connDB();
// 커넥션풀에서 객체 가져오기
con = dataFactory.getConnection();
String query = "SELECT * FROM t_member";
// ResultSet rs = stmt.executeQuery(query);
pstmt = con.prepareStatement(query);
// 1,2,3.... set
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
MemberVO vo = new MemberVO();
vo.setId(rs.getString("id"));
vo.setPwd(rs.getString("pwd"));
vo.setName(rs.getString("name"));
vo.setEmail(rs.getString("email"));
vo.setJoindate(rs.getDate("joindate"));
list.add(vo);
}
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void addMember(MemberVO m) {
try {
con = dataFactory.getConnection();
String query = "INSERT INTO t_member (id,pwd,name,email) VALUES (?,?,?,?)";
pstmt = con.prepareStatement(query);
pstmt.setString(1, m.getId());
pstmt.setString(2, m.getPwd());
pstmt.setString(3, m.getName());
pstmt.setString(4, m.getEmail());
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void delMember(String id) {
try {
con = dataFactory.getConnection();
String query = "DELETE FROM t_member WHERE id=?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// DB 연결
// private void connDB() {
// try {
// Class.forName(driver);
// con = DriverManager.getConnection(url, user, pwd);
// stmt = con.createStatement();
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
}
package pro14;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberDAO;
import member.MemberVO;
/**
* Servlet implementation class MemberServlet
*/
@WebServlet("/memberList")
public class MemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MemberDAO dao = new MemberDAO();
List<MemberVO> list = dao.listMembers();
request.setAttribute("list", list);
request.getRequestDispatcher("/WEB-INF/view/memberList.jsp").forward(request, response);
}
}
파일 업로드
package pro14;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import member.MemberDAO;
import member.MemberVO;
/**
* Servlet implementation class MemberServlet
*/
@WebServlet("/memberList")
public class MemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MemberDAO dao = new MemberDAO();
List<MemberVO> list = dao.listMembers();
request.setAttribute("list", list);
request.getRequestDispatcher("/WEB-INF/view/memberList.jsp").forward(request, response);
}
}
Ajax
- 이전 페이지 띄워보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(function(){ // 이게 핵심!
$("#btn").click(function(){
$.ajax({
url: '/pro15/test01/upleadForm.jsp',
success: function(res){
$("#wrap").html(res);
},
error: function(xhr, status, error){
alert("에러 발생: " + error);
}
});
});
});
</script>
</head>
<body>
<div id="wrap">
<input type="button" id="btn" value="ajax">
</div>
</body>
</html>
- 요청 응답 받기
- 버튼 누를 때마다 텍스트 추가
package ex01.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AjaxTest1
*/
@WebServlet("/ajaxTest1") // 그대로 유지
public class AjaxTest1 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandler(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandler(request, response);
}
private void doHandler(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
String param = (String) request.getParameter("param");
System.out.println("param = " + param);
PrintWriter writer = response.getWriter();
writer.print("안녕하세요.서버입니다.");
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
function fn_process(){
$.ajax({
type: "get",
dataType: "text",
url: "/pro16/ajaxTest1",
data: { param: "Hello,jquery" },
success: function (data, textStatus){
$('#message').append(data);
},
error: function(data, textStatus){
alert("에러가 발생했습니다.");
},
complete: function(data, textStatus){
alert("작업을 완료했습니다");
}
});
}
</script>
</head>
<body>
<input type="button" value="전송하기" onClick="fn_process()" /><br><br>
<div id="message"></div>
</body>
</html>
메모
- 선언문
- <%! %>
- 스클립틀릿
- <% %>
- 표현식
- <%=값 %>
- 디렉티브 (지시어)
- page (import)
- include (디렉티브 : 액션태그 차이)
- jsp:include</jsp:include> 또는 jsp:include
- EL
- 출력 용도, null 처리 불필요
- ${값}
- 저장소에서 꺼내줌, 꺼내는 순서
- page → request → session → application
- 비교 연산자
- 원래 연산자 + 키워드 (줄임말) ex) == → eq →, ! = ⇒ ne ..
- empty (비어있는지) (true : null , ‘’) ex) 로그인 상태 → not empty 세션변수
- 내장객체 → 파라미터 (param)
- ctrl + spacebar
728x90
반응형
'BackEnd' 카테고리의 다른 글
5/28 - Spring (0) | 2025.06.01 |
---|---|
5/27 - ajax, JSON (1) | 2025.06.01 |
5/23 - 서블릿, 쿠키와 세션, 필터와 리스너, JSP (0) | 2025.06.01 |
5/22 - Servlet, 쿠키, 세션 (0) | 2025.06.01 |
5/21 - 서블릿 응답 처리 방법 (0) | 2025.06.01 |