목표 : 사용자들이 강의평가를 등록하고 신고하기 기능을 이용하도록 한다.
▶ 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 |