일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- localhost
- 파이썬
- MySQL
- github token
- PHPStorm
- clone
- 깃 토큰
- import data
- 클론
- OrCAD 다운로드
- php
- DataGrip
- Python
- run sql script
- error 해결
- database
- vscode
- csv
- jupyter
- console창
- cmd
- visualstudio code
- 오류
- 따옴표 삭제
- Visual Studio Code
- github clone
- 에러
- error
- 데이터베이스
- 단축키
- Today
- Total
개발 노트
10/21 id, pw 구별, id, pw 필수조건, MVC list 출력 본문
10/21 id, pw 구별, id, pw 필수조건, MVC list 출력
hayoung.dev 2022. 10. 31. 02:39scott 계정에서 하단 실행
--------------------------------------------------------
-- DDL for Table MVC_BOARD
--------------------------------------------------------
CREATE TABLE "SCOTT"."MVC_BOARD"
( "BID" NUMBER(4,0) Primary KEY,
"BNAME" VARCHAR2(20 BYTE),
"BTITLE" VARCHAR2(100 BYTE),
"BCONTENT" VARCHAR2(300 BYTE),
"BDATE" DATE DEFAULT sysDate,
"BHIT" NUMBER(4,0) DEFAULT 0,
"BGROUP" NUMBER(4,0),
"BSTEP" NUMBER(4,0),
"BINDENT" NUMBER(4,0)
) ;
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (1,'111','222','333',to_date('16/06/09','RR/MM/DD'),1,1,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (2,'강공','게시판','인제 들어 가나',to_date('16/06/09','RR/MM/DD'),7,2,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (3,'답변_강공','게시판','인제 들어 가나',to_date('16/06/09','RR/MM/DD'),5,2,1,1);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (4,'케이팝스타','안예은','연결하지요',to_date('16/06/09','RR/MM/DD'),11,4,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (23,'김소현','qqq','입력',to_date('16/06/12','RR/MM/DD'),4,23,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (41,'옥주현1','천년의사랑1','나가수에서 1등',to_date('16/07/07','RR/MM/DD'),8,41,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (25,'정선아','암네리스','난 지금 여기에',to_date('16/06/12','RR/MM/DD'),9,25,0,0);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (42,'신성록','답변 천년의사랑','나가수에서 1등 했지요
축하해요',to_date('16/07/07','RR/MM/DD'),2,41,1,1);
Insert into SCOTT.MVC_BOARD (BID,BNAME,BTITLE,BCONTENT,BDATE,BHIT,BGROUP,BSTEP,BINDENT) values (43,'엄기준','답변의 답변','신성록씨
나가수에서 1등 했지요
축하해요를 썼지요
ㅎㅎㅎ',to_date('16/07/07','RR/MM/DD'),1,41,2,2);
commit;
Error reading file C:\Users\admin\.m2\repository\com\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.3.jar C:\Users\admin\.m2\repository\com\oracle\ojdbc6\11.2.0.3\ojdbc6-11.2.0.3.jar (지정된 파일을 찾을 수 없습니다) |
상단처럼 spring이 실행이 잘 안되면(설치문제이면)
잘 실행되는 사람의 repository폴더를 복사해서 C:\Users\admin\.m2\repository에 붙여넣기. (노트북에 m2파일 있음)
<och07_MVC043>
java > RedirectController.java
package com.oracle.mvc043;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RedirectController {
private static final Logger logger = LoggerFactory.getLogger(RedirectController.class);
@RequestMapping("studentConfirm")
public String studentRedirect(HttpServletRequest httpServletRequest,Model model) {
logger.info("studentConfirm start...");
String id = httpServletRequest.getParameter("id");
logger.info("studentConfirm id->{}" , id);
String pw = "1234";
model.addAttribute("id", id );
model.addAttribute("pw", pw );
// 성공이라고 가정 --> 같은 Controller내 method로 이동
if(id.equals("abc")) {
return "redirect:studentSuccess";
}
// 아니면 실패
return "redirect:studentError";
}
@RequestMapping("studentSuccess")
public String studentSuccess(HttpServletRequest request, Model model) {
logger.info("studentSuccess start...");
String id = request.getParameter("id");
String password = request.getParameter("pw");
logger.info("studentConfirm id->{}" , id);
logger.info("studentConfirm password->{}" , password);
model.addAttribute("id", id );
model.addAttribute("password", password );
return "student/studentSuccess";
}
@RequestMapping("studentError")
public String studentError(HttpServletRequest request, Model model) {
String id = request.getParameter("id");
model.addAttribute("id", id );
logger.info("studentError Start...");
return "student/studentError";
}
}
views > student > studentSuccess.jsp
<%@ 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>
</head>
<body>
<h1>studentSuccess</h1>
id : ${id } <p>
pw : ${password }
</body>
</html>
views > student > studentError.jsp
<%@ 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>
</head>
<body>
넌 누구냐 <p>
<h1>20년간 만두만 </h1> 주고...
id : ${id }
</body>
</html>
출력 결과 :
http://localhost:8181/mvc043/studentConfirm?id=abc&pw=1234 입력한 경우
http://localhost:8181/mvc043/studentConfirm?id=a&pw=1234 입력한 경우
<och07_MVC05>
java > StudentValidator.java : validation.Validator 상속받음
package com.oracle.mvc05;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import com.oracle.mvc05.dto.Student;
public class StudentValidator implements Validator {
// 검증할 객체의 클래스 타입 정보
@Override
public boolean supports(Class<?> student) {
// TODO Auto-generated method stub
return Student.class.isAssignableFrom(student);
}
// validate 함수
@Override
public void validate(Object target, Errors errors) {
System.out.println("StudentValidator validate() start..");
Student student = (Student) target;
String studentName = student.getName();
if(studentName == null || studentName.trim().isEmpty()) {
System.out.println("studentName is null or empty");
System.out.println("validate->회원 이름을 입력하세요...");
errors.rejectValue("name", "회원 이름 공백 또는 NULL 오류");
}
String studentId = student.getStrId();
if(studentId == null || studentId.trim().isEmpty()) {
System.out.println("studentId is null or empty");
System.out.println("validate->strId을 입력하세요...");
errors.rejectValue("strId", "strId 공백 또는 NULL 오류");
}
}
}
java > StudentController.java
package com.oracle.mvc05;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import com.oracle.mvc05.dto.Student;
@Controller
public class StudentController {
private static final Logger logger = LoggerFactory.getLogger(StudentController.class);
@RequestMapping("/studentForm")
public String studentForm() {
logger.info("studentForm start...");
return "studentForm";
}
@RequestMapping("/student/create")
public String studentCreate(Student student,BindingResult result, Model model ) {
String page = "studentDonePage";
logger.info("/student/create start...");
StudentValidator validator = new StudentValidator();
validator.validate(student, result);
logger.info("result Message->{}", result.toString());
System.out.println("result Message getFieldError->"+ result.getFieldErrors("name"));
String name ="";
String id ="";
if(result.hasErrors()) {
if(result.hasFieldErrors("name")) {
System.out.println("result.hasErrors1->"+result.getFieldError("name"));
FieldError fieldError1 =result.getFieldError("name");
name = fieldError1.getCode();
model.addAttribute("nameErr", name);
}
if(result.hasFieldErrors("strId")) {
System.out.println("result.hasErrors2->"+result.getFieldError("strId"));
FieldError fieldError2 =result.getFieldError("strId");
id = fieldError2.getCode();
model.addAttribute("idErr", id);
}
page = "studentForm";
// 정상일 경우
} else {
model.addAttribute("student", student);
}
System.out.println("result Message->End");
logger.info("result page->{}", page);
logger.info("result name->{}", name);
return page;
}
}
java > dto > Student.java
package com.oracle.mvc05.dto;
public class Student {
private String name;
private String strId;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStrId() {
return strId;
}
public void setStrId(String strId) {
this.strId = strId;
}
}
views > studentDonePage.jsp
<%@ 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>
</head>
<body>
<h1>student 정상 검증</h1>
이름 : ${student.name }
ID : ${student.strId }
</body>
</html>
views > studentForm.jsp
<%@ page language="java" 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>
</head>
<body>
<%
String context = request.getContextPath();
%>
context : <%=context%> <p></p>
<c:if test="${nameErr !='' }">
${nameErr}
</c:if>
<c:if test="${idErr !='' }">
${idErr}
</c:if>
<form action="<%=context%>/student/create" >
이름 : <input type="text" name="name" > <br />
아이디 : <input type="text" name="strId" > <br />
<input type="submit" value="전송"> <br />
</form>
</body>
</html>
출력 결과 : /studentForm
/student/create
<och07_MVCBoard>
resources > css(folder) > Board.css
@CHARSET "UTF-8";
body { font-family: 굴림체; text-align: center; }
table { border: 1px solid pink; width: 100%;
}
tr { height: 30px; background: yellow; }
/* th { background: #C9BFED; } */
th { background: #b9b973; }
td { background: #f9f3b3; }
java > dto > BDto.java
package com.oracle.oMVCBoard.dto;
import java.sql.Timestamp;
public class BDto {
int bId;
String bName;
String bTitle;
String bContent;
Timestamp bDate;
int bHit;
int bGroup;
int bStep;
int bIndent;
/* 기본생성자 */
public BDto() {
// TODO Auto-generated constructor stub
}
/* 생성자 */
public BDto(int bId, String bName, String bTitle, String bContent,
Timestamp bDate, int bHit,
int bGroup, int bStep, int bIndent) {
// TODO Auto-generated constructor stub
this.bId = bId;
this.bName = bName;
this.bTitle = bTitle;
this.bContent = bContent;
this.bDate = bDate;
this.bHit = bHit;
this.bGroup = bGroup;
this.bStep = bStep;
this.bIndent = bIndent;
}
public int getbId() {
return bId;
}
public void setbId(int bId) {
this.bId = bId;
}
public String getbName() {
return bName;
}
public void setbName(String bName) {
this.bName = bName;
}
public String getbTitle() {
return bTitle;
}
public void setbTitle(String bTitle) {
this.bTitle = bTitle;
}
public String getbContent() {
return bContent;
}
public void setbContent(String bContent) {
this.bContent = bContent;
}
public Timestamp getbDate() {
return bDate;
}
public void setbDate(Timestamp bDate) {
this.bDate = bDate;
}
public int getbHit() {
return bHit;
}
public void setbHit(int bHit) {
this.bHit = bHit;
}
public int getbGroup() {
return bGroup;
}
public void setbGroup(int bGroup) {
this.bGroup = bGroup;
}
public int getbStep() {
return bStep;
}
public void setbStep(int bStep) {
this.bStep = bStep;
}
public int getbIndent() {
return bIndent;
}
public void setbIndent(int bIndent) {
this.bIndent = bIndent;
}
}
java > dao(package) > BDao.java
package com.oracle.oMVCBoard.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.oracle.oMVCBoard.dto.BDto;
public class BDao {
DataSource dataSource;
public BDao() {
try {
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/OracleDB");
} catch (NamingException e) {
System.out.println("생성자 dataSource-->" + e.getMessage() );
e.printStackTrace();
}
}
public ArrayList<BDto> boardList() {
ArrayList<BDto> bList = new ArrayList<BDto>();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
System.out.println("BDao boardList start..." );
try {
connection = dataSource.getConnection();
String query = "SELECT bId, bName, bTitle, bContent, bDate, bHit,"
+ " bGroup, bStep, bIndent "
+ " FROM mvc_board order by bGroup desc, bStep asc";
preparedStatement = connection.prepareStatement(query);
System.out.println("BDao query-->" + query );
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int bId = resultSet.getInt("bId");
String bName = resultSet.getString("bName");
String bTitle = resultSet.getString("bTitle");
String bContent = resultSet.getString("bContent");
Timestamp bDate = resultSet.getTimestamp("bDate");
int bHit = resultSet.getInt("bHit");
int bGroup = resultSet.getInt("bGroup");
int bStep = resultSet.getInt("bStep");
int bIndent = resultSet.getInt("bIndent");
BDto dto = new BDto(bId, bName, bTitle, bContent, bDate, bHit,
bGroup, bStep, bIndent);
bList.add(dto);
}
} catch (SQLException e) {
System.out.println("list dataSource-->" + e.getMessage() );
e.printStackTrace();
} finally {
try {
if(resultSet != null) resultSet.close();
if(preparedStatement != null) preparedStatement.close();
if(connection != null) connection.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
return bList;
}
}
spring의 Servers > Tomcat v9.0 > context.xml 파일의 <context> 안에 하단 코드 추가
<Resource
name="jdbc/OracleDB"
auth="Container"
type="javax.sql.DataSource"
username="scott"
password="tiger"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"
maxActive="50"
maxIdle="10"
/>
java > command(package) > BCommand.java (interface)
package com.oracle.oMVCBoard.command;
import org.springframework.ui.Model;
public interface BCommand {
void execute(Model model);
}
java > controller(package) > BController.java
package com.oracle.oMVCBoard.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.oracle.oMVCBoard.command.BCommand;
import com.oracle.oMVCBoard.command.BListCommand;
@Controller
public class BController {
private static final Logger logger = LoggerFactory.getLogger(BController.class);
BCommand command = null;
@RequestMapping("list")
public String list(Model model) {
logger.info("list start...");
command = new BListCommand();
command.execute(model);
return "list";
}
}
java > command(package) > BListCommand.java
package com.oracle.oMVCBoard.command;
import java.util.ArrayList;
import org.springframework.ui.Model;
import com.oracle.oMVCBoard.dao.BDao;
import com.oracle.oMVCBoard.dto.BDto;
// Service
public class BListCommand implements BCommand {
@Override
public void execute(Model model) {
// Dao 연결
BDao dao = new BDao();
ArrayList<BDto> boardDtoList = dao.boardList();
System.out.println("BListCommand boardDtoList.size()-->"+boardDtoList.size());
model.addAttribute("boardList", boardDtoList);
}
}
views > list.jsp
<%@ page language="java" 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>게시판</title>
</head>
<body>
<h1>게시판</h1>
<table>
<tr>
<td>번호</td><td>이름</td><td>제목</td><td>날짜</td> <td>히트</td>
</tr>
<c:forEach items="${boardList }" var="mvc_board">
<tr>
<td>${mvc_board.bId}</td>
<td>${mvc_board.bName}</td>
<td>
<c:forEach begin="1" end="${mvc_board.bIndent}">-</c:forEach>
<a href="content_view?bId=${mvc_board.bId}">${mvc_board.bTitle}</a></td>
<td>${mvc_board.bDate}</td>
<td>${mvc_board.bHit}</td>
</tr>
</c:forEach>
<tr>
<td colspan="5"> <a href="write_view">글작성</a> </td>
</tr>
</table>
</body>
</html>
출력 결과