JSP로 강의평가 웹 사이트 - 평가 등록 및 신고 구현

2020. 5. 9. 15:50·JAVA/JSP

목표 : 사용자들이 강의평가를 등록하고 신고하기 기능을 이용하도록 한다.

 

▶ EvaluationDTO.java: 강의평가 정보 DB를 전송하는 객체 역할을 담당

package evaluation;

public class EvaluationDTO {

	int evaluationID;
	String userID;
	String lectureName;
	String professorName;
	int lectureYear;
	String semesterDivide;
	String lectureDivede;
	String evaluationTitle;
	String evaluationContent;
	String totalScore;
	String creditScore;
	String comfortableScore;
	String lectureScore;
	int likeCount;
	
	public int getEvaluationID() {
		return evaluationID;
	}
	public void setEvaluationID(int evaluationID) {
		this.evaluationID = evaluationID;
	}
	public String getUserID() {
		return userID;
	}
	public void setUserID(String userID) {
		this.userID = userID;
	}
	public String getLectureName() {
		return lectureName;
	}
	public void setLectureName(String lectureName) {
		this.lectureName = lectureName;
	}
	public String getProfessorName() {
		return professorName;
	}
	public void setProfessorName(String professorName) {
		this.professorName = professorName;
	}
	public int getLectureYear() {
		return lectureYear;
	}
	public void setLectureYear(int lectureYear) {
		this.lectureYear = lectureYear;
	}
	public String getSemesterDivide() {
		return semesterDivide;
	}
	public void setSemesterDivide(String semesterDivide) {
		this.semesterDivide = semesterDivide;
	}
	public String getLectureDivede() {
		return lectureDivede;
	}
	public void setLectureDivede(String lectureDivede) {
		this.lectureDivede = lectureDivede;
	}
	public String getEvaluationTitle() {
		return evaluationTitle;
	}
	public void setEvaluationTitle(String evaluationTitle) {
		this.evaluationTitle = evaluationTitle;
	}
	public String getEvaluationContent() {
		return evaluationContent;
	}
	public void setEvaluationContent(String evaluationContent) {
		this.evaluationContent = evaluationContent;
	}
	public String getTotalScore() {
		return totalScore;
	}
	public void setTotalScore(String totalScore) {
		this.totalScore = totalScore;
	}
	public String getCreditScore() {
		return creditScore;
	}
	public void setCreditScore(String creditScore) {
		this.creditScore = creditScore;
	}
	public String getComfortableScore() {
		return comfortableScore;
	}
	public void setComfortableScore(String comfortableScore) {
		this.comfortableScore = comfortableScore;
	}
	public String getLectureScore() {
		return lectureScore;
	}
	public void setLectureScore(String lectureScore) {
		this.lectureScore = lectureScore;
	}
	public int getLikeCount() {
		return likeCount;
	}
	public void setLikeCount(int likeCount) {
		this.likeCount = likeCount;
	}
	public EvaluationDTO() {
		
	}
	public EvaluationDTO(int evaluationID, String userID, String lectureName, String professorName, int lectureYear,
			String semesterDivide, String lectureDivede, String evaluationTitle, String evaluationContent,
			String totalScore, String creditScore, String comfortableScore, String lectureScore, int likeCount) {
		super();
		this.evaluationID = evaluationID;
		this.userID = userID;
		this.lectureName = lectureName;
		this.professorName = professorName;
		this.lectureYear = lectureYear;
		this.semesterDivide = semesterDivide;
		this.lectureDivede = lectureDivede;
		this.evaluationTitle = evaluationTitle;
		this.evaluationContent = evaluationContent;
		this.totalScore = totalScore;
		this.creditScore = creditScore;
		this.comfortableScore = comfortableScore;
		this.lectureScore = lectureScore;
		this.likeCount = likeCount;
	}
	
}

 EvaluationDAO.java: 강의평가 DB에 접근하게 만들어주는 객체.

package evaluation;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import util.DatabaseUtil;

public class EvaluationDAO {
	
	public int write(EvaluationDTO evaluationDTO) {
		  String SQL = "INSERT INTO EVALUATION VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)";	//EvaluationID는 auto increament 설정이 되있기 때문에  NULL값을 넣어주면 차례대로 증가함
		  Connection conn = null; 
		  PreparedStatement pstmt = null; 
		  ResultSet rs = null; 
		  try {		  
			  conn = DatabaseUtil.getConnection(); 
			  pstmt = conn.prepareStatement(SQL); 
			  pstmt.setString(1, evaluationDTO.getUserID());
			  pstmt.setString(2, evaluationDTO.getLectureName()); 
			  pstmt.setString(3, evaluationDTO.getProfessorName()); 
			  pstmt.setInt(4, evaluationDTO.getLectureYear()); 
			  pstmt.setString(5, evaluationDTO.getSemesterDivide()); 
			  pstmt.setString(6, evaluationDTO.getLectureDivede()); 
			  pstmt.setString(7, evaluationDTO.getEvaluationTitle()); 
			  pstmt.setString(8, evaluationDTO.getEvaluationContent()); 
			  pstmt.setString(9, evaluationDTO.getTotalScore()); 
			  pstmt.setString(10, evaluationDTO.getCreditScore()); 
			  pstmt.setString(11, evaluationDTO.getComfortableScore()); 
			  pstmt.setString(12, evaluationDTO.getLectureScore()); 
			  return pstmt.executeUpdate(); 
		  } catch (Exception e) {
			   e.printStackTrace();
		  } finally { 
			try {if(conn != null) conn.close();} catch (Exception e) {e.printStackTrace();}
			try {if(pstmt != null) pstmt.close();} catch (Exception e) {e.printStackTrace();}
			try {if(rs != null) rs.close();} catch (Exception e) {e.printStackTrace();}
		 }
		  return -1; 
	     }
}

 

reportAction.jsp: 사용자가 신고 form을 작성하면 관리자가 메일로 받는다.

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ page import="javax.mail.Transport" %>
<%@ page import="javax.mail.Message" %>
<%@ page import="javax.mail.Address" %>
<%@ page import="javax.mail.internet.InternetAddress" %>
<%@ page import="javax.mail.internet.MimeMessage" %>
<%@ page import="javax.mail.Session" %>
<%@ page import="javax.mail.Authenticator" %>
<%@ page import="java.util.Properties" %>
<%@ page import="user.UserDAO"%>
<%@ page import="util.SHA256"%>
<%@ page import="util.Gmail"%>
<%@ page import="java.io.PrintWriter"%>
<%
   UserDAO userDAO = new UserDAO();
   String userID = null;
   if(session.getAttribute("userID") != null) {
	   userID = (String) session.getAttribute("userID");
   }
   if(userID == null) {
	   PrintWriter script = response.getWriter();
	   script.println("<script>");
	   script.println("alert('로그인을 해주세요.');");
	   script.println("location.href = 'userLogin.jsp'");
	   script.println("</script>");
	   script.close();
	   return;
   }
   
   request.setCharacterEncoding("UTF-8");
   String reportTitle = null;
   String reportContent = null;
   if(request.getParameter("reportTitle") != null) {
	   reportTitle = request.getParameter("reportTitle");
   }
   if(request.getParameter("reportContent") != null) {
	   reportContent = request.getParameter("reportContent");
   }
   if(reportTitle == null || reportContent == null) {
	   PrintWriter script = response.getWriter();
	   script.println("<script>");
	   script.println("alert('입력이 안 된 사항이 있습니다.');");
	   script.println("history.back();");
	   script.println("</script>");
	   script.close();
	   return;
   }

   String host = "http://localhost:8080/Lecture_Evaluation/";
   String from = "yourEmail@gmail.com"; // your Email
   String to = "yourEmail@naver.com"; // your Email
   String subject = "강의평가 사이트에서 접수된 신고  메일입니다.";
   String content = "신고자: " + userID +
		            "<br>제목: " + reportTitle +
		            "<br>내용: " + reportContent; 
 
   Properties p = new Properties();
   p.put("mail.smtp.user", from);
   p.put("mail.smtp.host", "smtp.googlemail.com");
   p.put("mail.smtp.port", "456");
   p.put("mail.smtp.starttls.enable", "true");
   p.put("mail.smtp.auth", "true");
   p.put("mail.smtp.debug", "true");
   p.put("mail.smtp.socketFactory.port", "465");
   p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
   p.put("mail.smtp.socketFactory.fallback", "false");
   
   try {
	   Authenticator auth = new Gmail();
	   Session ses = Session.getInstance(p, auth);
	   ses.setDebug(true);
	   MimeMessage msg = new MimeMessage(ses);
	   msg.setSubject(subject);
	   Address fromAddr = new InternetAddress(from);
	   msg.setFrom(fromAddr);
	   Address toAddr = new InternetAddress(to);
	   msg.addRecipient(Message.RecipientType.TO, toAddr);
	   msg.setContent(content, "text/html;charset=UTF8");
	   Transport.send(msg);   
   } catch (Exception e) {
	   e.printStackTrace();
	   PrintWriter script = response.getWriter();
	   script.println("<script>");
	   script.println("alert('오류가 발생했습니다..');");
	   script.println("history.back();");
	   script.println("</script>");
	   script.close();
	   return;
   }
   PrintWriter script = response.getWriter();
   script.println("<script>");
   script.println("alert('정상적으로 신고되었습니다.');");
   script.println("history.back();");
   script.println("</script>");
   script.close();
  
%>

- unreachable code가 계속 떠서 마지막%> 위에 return 지우니 해결 되었다.

 

evaluationRegisterAction.jsp: 사용자가 평가를 등록하면 처리되는 과정.

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ page import="evaluation.EvaluationDTO"%>
<%@ page import="evaluation.EvaluationDAO"%>
<%@ page import="util.SHA256"%>
<%@ page import="java.io.PrintWriter"%>
<%
	request.setCharacterEncoding("UTF-8");
	String userID = null;
	if (session.getAttribute("userID") != null) {
		userID = (String) session.getAttribute("userID");
	}
	if (userID == null) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('로그인을 해주세요.');");
		script.println("location.href = 'userLogin.jsp';");
		script.println("</script>");
		script.close();
		return;
	}
	
	String lectureName = null;
	String professorName = null;
	int lectureYear = 0;
	String semesterDivide = null;
	String lectureDivede = null;
	String evaluationTitle = null;
	String evaluationContent = null;
	String totalScore = null;
	String creditScore = null;
	String comfortableScore = null;
	String lectureScore = null;

	if (request.getParameter("lectureName") != null) {
		lectureName = request.getParameter("lectureName");
	}
	if (request.getParameter("professorName") != null) {
		professorName = request.getParameter("professorName");
	}
	if (request.getParameter("lectureYear") != null) {
		try {
			lectureYear = Integer.parseInt(request.getParameter("lectureYear"));
	    } catch (Exception e) {
	    	System.out.println("강의 연도 데이터 오류");
	    }
	}
	if (request.getParameter("semesterDivide") != null) {
		semesterDivide = request.getParameter("semesterDivide");
	}
	if (request.getParameter("lectureDivede") != null) {
		lectureDivede = request.getParameter("lectureDivede");
	}
	if (request.getParameter("evaluationTitle") != null) {
		evaluationTitle = request.getParameter("evaluationTitle");
	}
	if (request.getParameter("evaluationContent") != null) {
		evaluationContent = request.getParameter("evaluationContent");
	}
	if (request.getParameter("totalScore") != null) {
		totalScore = request.getParameter("totalScore");
	}
	if (request.getParameter("creditScore") != null) {
		creditScore = request.getParameter("creditScore");
	}
	if (request.getParameter("comfortableScore") != null) {
		comfortableScore = request.getParameter("comfortableScore");
	}
	if (request.getParameter("lectureScore") != null) {
		lectureScore = request.getParameter("lectureScore");
	}
	
	 if(lectureName == null || professorName == null || lectureYear == 0 || semesterDivide == null || lectureDivede == null || evaluationTitle == null ||
	     evaluationContent == null || totalScore == null || creditScore == null || comfortableScore == null || lectureScore == null ||
		 evaluationTitle.equals("") || evaluationContent.equals("")) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('입력이 안 된 사항이 있습니다.');");
		script.println("history.back();");
		script.println("</script>");
		script.close();
		return;
	}
	EvaluationDAO evaluationDAO = new EvaluationDAO();
	int result = evaluationDAO.write(new EvaluationDTO(0, userID, lectureName, professorName,
			lectureYear, semesterDivide, lectureDivede, evaluationTitle, evaluationContent,
			totalScore, creditScore, comfortableScore, lectureScore, 0));
	if (result == -1) {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('강의평가 등록을 실패했습니다.');");
		script.println("history.back();");
		script.println("</script>");
		script.close();
		return;
	} else {
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("location.href = 'index.jsp'");
		script.println("</script>");
		script.close();
		return;
	}
%>

-------------

단 5분짜리 강의도 몇시간씩 걸리지만 그래도 오류를 해결할 때 마다 성취감이 폭발한다.

오타와의 전쟁, 나침반 없이 걸어가는 이 막연함을 이겨내고 싶다.

 

출처: 안경잡이개발자

'JAVA > JSP' 카테고리의 다른 글

JSP 강의평가 웹사이트 - 추천 및 삭제 기능 구현  (0) 2020.05.11
JSP 강의평가 웹 사이트 - 평가 검색 및 출력 구현  (0) 2020.05.10
JSP로 강의평가 웹 사이트 - 로그인 및 로그아웃 구현하기  (0) 2020.05.08
JSP 강의평가 웹사이트 회원가입 및 이메일 인증  (0) 2020.05.07
JSP 강의평가 웹사이트 - 회원 데이터 모델링  (0) 2020.05.06
'JAVA/JSP' 카테고리의 다른 글
  • JSP 강의평가 웹사이트 - 추천 및 삭제 기능 구현
  • JSP 강의평가 웹 사이트 - 평가 검색 및 출력 구현
  • JSP로 강의평가 웹 사이트 - 로그인 및 로그아웃 구현하기
  • JSP 강의평가 웹사이트 회원가입 및 이메일 인증
꿀표
꿀표
양봉업자
  • 꿀표
    꿀로그
    꿀표
  • 전체
    오늘
    어제
    • 분류 전체보기 (82)
      • 인디해커 (0)
      • AI (0)
      • 프론트엔드 (34)
        • Javascript (17)
        • React (9)
        • Git (2)
        • Web Env (4)
        • Typescript (1)
        • 웹접근성 (1)
        • 상태관리 (0)
      • CS (8)
        • Network (3)
        • 알고리즘 (5)
      • 글쓰기 (3)
        • 생각 (2)
        • 서적 (1)
      • JAVA (37)
        • JAVA 기초 (22)
        • JSP (15)
  • 블로그 메뉴

    • 방명록
  • 인기 글

  • 태그

    react
    greedy
    network
    프로그래머스
    javascript
    알고리즘
    구명보트
    js
    그리디
    cross browsing
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
꿀표
JSP로 강의평가 웹 사이트 - 평가 등록 및 신고 구현
상단으로

티스토리툴바