728x90
반응형
렌더링의 순서에 따라서 정보를 가져오는지의 유무
js 입력된 데이터 체크
<form action ="memberUpdatePro.jsp" method = "post" name = "fr">
title 밑에 자바스크립트 입력
<script type ="text/javascript">
// js 입력된 데이터 체크
</script>
body 밑에 쓴다면,
console.log
개발자가 개발을 위해서 정보를 출력하기 위한 것
console.log(window.document.fr);
일반 유저가 확인할 수 없는 곳에 있다.
f12 를 눌러서 들어가면 console이라는 창이 뜸
console.log(window.document.fr.pw);
console.log(window.document.fr.pw.value);
비밀번호 입력하세요 창 뜨기
<form action ="memberUpdatePro.jsp" method = "post" name = "fr" onsubmit="check();">
비밀번호 : <input type = "password" name = "pw" value = "" placeholder ="비밀번호를 입력하세요"><br>
function check(){
if(window.document.fr.pw.value==""){
alert("비밀번호를 입력하세요!");
}
}
리턴값 넣어서 check() 안뜨게 하기
break;
if문에 쓸수는 있지만 함수를 끝내는 역할은 못한다.
function check(){
if(window.document.fr.pw.value==""){
alert("비밀번호를 입력하세요!");
return; //함수의 종료
}
alert("check() 끝");
}
비밀번호 없는지 체크하고 못넘어가게 하기
return false;
<form action ="memberUpdatePro.jsp" method = "post" name = "fr" onsubmit="return check();">
function check(){
if(window.document.fr.pw.value==""){
alert("비밀번호를 입력하세요!");
document.fr.pw.focus();
return false; //함수의 종료
}
alert("check() 끝");
}
비밀번호를 안쓰면, 쓰라는 창이 나오면서 계속 그 창에 머물러 있다.
document.fr.pw.focus();
=> 비밀번호에 커서가 깜빡깜빡 거림
회원정보 수정하기
<memberUpdatePro.jsp>
로그인 제어
String id = (String)session.getAttribute("id");
if(id==null){
response.sendRedirect("loginForm.jsp");
}
정보수정
<h1>memberUpdatePro.jsp</h1>
<%
//한글 처리
request.setCharacterEncoding("UTF-8");
//전달되는 정보 저장(수정할 데이터) - 액션태그
%>
<!-- MemberBean umb = new MemberBean(); 이거랑 같은 태그 -->
<jsp:useBean id="umb" class ="com.itwillbs.member.MemberBean" />
<jsp:setProperty property="*" name = "umb"/>
수정할 정보 : <%= umb %>
DB에 가서 해당 회원의 정보를 수정
memberDAO.java
회원 정보 수정 동작을 만들어야 함.
public int updateMember(MemberBean umb){
return 0;
}
} // class
memberupdatePro의 MemberBean이라는 객체를 받아와야함.
[1] 정상수정,
[0] 비밀번호 오류
[-1] 회원정보 없음
1. 드라이버 로드
2. 디비 연결
3. sql 작성 & pstmt 객체
4. sql 실행
5. 데이터 처리
과정이 다 똑같으므로, 변수를 선언하기
공통으로 사용할 변수 선언
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String sql = " ";
디비 연결해주는 메서드 구현
private Connection getConnection() throws Exception {
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
Class.forName(DRIVER);
//2.디비 연결
con = DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공");
System.out.println(" DAO : " + con);
return con;
}
f2 - throws Exception
Connection con 의 Connection을 빼고, 연결정보를 위의 con에 저장하겠다
밑으로 내려감,,
f2 - 두번 째 클릭
con 이라는 변수에 저장 될 것
디비연결작업
//공통으로 사용할 변수 선언
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String sql = " ";
//디비 연결해주는 메서드 구현
private Connection getConnection() throws Exception {
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
Class.forName(DRIVER);
//2.디비 연결
con = DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공");
System.out.println(" DAO : " + con);
//연결정보를 위의 con에 저장하겠다
return con;
}
// 정보 조회 메서드()
/**
*
* JavaDoc 주석 : 문법에 대한 설명을 작성하는 주석문
*
* 이 메서드는 로그인 정보 (id)를 입력받아서
*id에 해당하는 정보 모두를 조회 후 MemberBean 객체에 담아서
*리턴하는 메서드 입니다.
*
*/
public MemberBean getMember(String id) throws Exception {
//DB 에서 정보 조회 (select) -> MemberBean 객체 만들기
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
//2.디비 연결
Class.forName(DRIVER);
Connection con = DriverManager.getConnection(DBURL,DBID,DBPW);
//3.sql 작성(select) & pstmt 객체
String sql = "select * from itwill_member where id=?";
PreparedStatement pstmt = con.prepareStatement(sql);
// ???
pstmt.setString(1,id);
//4.SQL 실행
ResultSet rs = pstmt.executeQuery();
//MemberBean mb = new MemberBean();
MemberBean mb = null;
//5.데이터 처리
if(rs.next()){
//회원정보 저장 (MemberBean)
//rs(DB정보) -> MemberBean
mb = new MemberBean();
mb.setAge(rs.getInt("age"));
mb.setEmail(rs.getString("email"));
mb.setGender(rs.getString("gender"));
mb.setId(rs.getString("id"));
mb.setName(rs.getString("name"));
mb.setPw(rs.getString("pw"));
mb.setRegdate(rs.getTimestamp("regdate"));
}
//MemberBean 객체 생성 완료
System.out.println("정보 조회 완료! mb 리턴!");
return mb;
}
//정보 조회 메서드()
//정보 수정 동작()
public int updateMember(MemberBean umb){
// [1] 정상수정, [0] 비밀번호 오류 [-1] 회원정보 없음
int result = -1;
try {
//1. 드라이버 로드
//2. 디비 연결
con = getConnection();
//3. sql 작성 & pstmt 객체
//본인 여부 체크
sql = "select pw from itwill_member where id =?";
pstmt = con.prepareStatement(sql);
//?
pstmt.setString(1,umb.getId());
//4. sql 실행
pstmt.executeQuery();
rs = pstmt.executeQuery();
//5. 데이터 처리
if(rs.next()) {
//비밀번호가 있다(회원)
if(umb.getPw().equals(rs.getString("pw"))) {
//본인 -> 정보 수정
//3.sql 작성 (update-이름,나이,성별을 수정하는 구문)
sql = "update itwill_member set name =?,age =?,gender =? where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, umb.getName());
pstmt.setInt(2, umb.getAge());
pstmt.setString(3, umb.getGender());
pstmt.setString(4, umb.getId());
//4.sql 실행
pstmt.executeUpdate();
result = 1;
}else {
//비밀번호 오류
result = 0;
}
}else {
//비밀번호가 없다(비회원) - pw는 not null로 설정했기 때문
//return -1;
result = -1;
}
System.out.println(" DAO : 정보 수정 완료("+result+")");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//정보 수정 동작()
} //class
DB에 가서 해당 회원의 정보를 수정
<memberUpdatePro.jsp>
DAO 객체 생성
<%
MemberDAO dao = new MemberDAO();
%>
회원정보를 수정해주는 메서드 실행
<UpdatePro.jsp>
int result = dao.updateMember(umb);
수정 후에, 메인페이지로 이동
<main.jsp>
//result == 1, 0, -1
if(result ==1){
}else if(result==0){
}else{ //result == -1
}
result == 1
수정 성공 - 메인페이지 이동
result == 0
수정 실패, 비밀번호 오류 - 페이지 뒤로 가기
result == -1
수정 실패, 회원정보 오류 - 페이지 뒤로 가기
// DB에 가서 해당 회원의 정보를 수정
// DAO 객체 생성
MemberDAO dao = new MemberDAO();
//회원정보를 수정해주는 메서드 실행
int result = dao.updateMember(umb);
//result == 1, 0, -1
if(result ==1){
//수정 성공 - 메인페이지 이동
%>
<script type = "text/javascript">
alert('수정 성공!');
location.href="main.jsp"
</script>
<%
}else if(result==0){
//수정 실패 - 뒤로 가기%>
<script type = "text/javascript">
alert('수정실패 - 비밀번호 오류');
history.back();
</script>
<% }else{ //result == -1 %>
<script type = "text/javascript">
alert('수정실패 - 회원정보 오류');
history.back();
<% }%>
넘어렵다..
번외
자바스크립트 코드 불러올 수 있게 하기
Help -> Marketplace -> tern 검색 -> 첫번째 다운로드
그 후, JSP 프로젝트 - > configure -> 첫번째 -> jQuery 두개 클릭
728x90
반응형
'Spring > Model1 _2(MVC)' 카테고리의 다른 글
0901 JSP - admin 관리자 창 ~ 컬렉션 (0) | 2022.09.01 |
---|---|
0830 JSP - 회원 정보 삭제 (0) | 2022.08.30 |
0829 JSP - 분리 , throws ~ 회원 정보 수정 페이지 만들기 memberDAO (0) | 2022.08.29 |
0829 JSP - 데이터 처리 - 로그인 여부 (0) | 2022.08.29 |
[JSP&Servlet] parameter 와 attribute 차이 (0) | 2022.08.28 |