190717_Day68 <회원가입 미션>
<미션2>
==> 사용자인증JSP : Model1사용, DAO만 Model2개발방식!!
userinput.jsp (사용자정보 입력폼, 회원가입폼)
userprocess.jsp (사용자정보 DB저장)
- insert
userconfirm.jsp (로그인 화면폼)
confirmprocess.jsp (로그인 처리: 아이디, 비번에 대한 존재와 일치를 체크)
- select
modifyuser.jsp (사용자정보 수정폼)
- select
modifyprocess.jsp (사용자정보 DB수정처리)
- update
deleteid.jsp (사용자정보 DB삭제, 회원탈퇴)
- delete
confirmid.jsp (아이디 중복여부 처리)
- select
service.jsp <------- sessionT3.jsp내용 복사
========
테이블명: UserInfo
<SQL스크립트 DDL>
drop table userinfo;
create table userinfo(
id varchar2(20) constraint userinfo_pk primary key,
pass varchar2(20) not null,
name varchar2(30) not null,
jumin varchar2(14) not null, --'960302-1012345'
birth varchar2(10), --'1996-03-02'
zip number(5) not null,
addr varchar2(300),
email varchar2(50) not null,
job varchar2(30) not null
);
---> userinfo.sql 저장, 실행
---> UserInfo.java (9개의 속성 정의)
-----------------------------------------------------------------------------
작업순서)
회원정보입력 ---> 로그인처리 ---> 수정처리
---> 삭제처리 ---> 아이디 중복처리 ---> 유효성검사
1. userinput.jsp(입력폼,회원가입폼)에서 '월'과 '일'에 대한 숫자 출력.
월: 01~09~12 (자바for문을 통해 출력)
2. UserInfo.java작성 (테이블의 한 레코드 표현)
3. UserInfoDAO.java작성
4. DB insert작업(userprocess.jsp)
DAO의 insert호출 ---> 호출결과에 따라 적당한 메시지 출력
5. userconfirm.jsp (로그인화면) ---이동--> confirmprocess.jsp
- UserInfoDAO의 selectLogin() 메소드 구현
- 로그인 처리
- 호출결과에 따라 적당한 메시지 출력
- 로그인 성공시 세션적용(설정)
6. 수정폼에 기존 데이터 뿌리기
- UserInfoDAO클래스내에 select()메소드 구현
- 호출 후 결과값을 HTML에 뿌려주기
7. 수정폼에 입력된 데이터를 실제 DB에 반영
- UserInfoDAO클래스내에 modify()메소드 구현
- 수정항목: 비번,우편번호,주소,이메일,직업
- 호출 결과에 따라 적당한 메시지(table) 출력
8. 삭제(회원탈퇴)버튼 클릭시 - deleteid.jsp
- 정말 삭제할지를 확인 (JavaScript confirm창)
- DB에서 삭제처리
- 호출 결과에 따라 적당한 메시지(table) 출력
9. 입력폼에 있는 '아이디 중복확인'에 대한 처리
---> confirmid.jsp (window.open처리)
10. 입력폼과 수정폼의 데이터 입력에 대한 유효성검사.
(빈값, 주민번호에 대한 숫자체크와 자릿수,
이메일에 대한 유효성검사- gildong1004@naver.com)
- [영문자와 숫자조합6~15]@[영문자].[영문자]
----> javascript처리 ----> validateCheck()함수 추가
userinput.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>사용자등록</title>
<script type="text/javascript">
function birthChange(){
console.log('birthChange')
var jumin1 = document.frm.jumin1.value ;//'960302'
var birthYear = jumin1.substr(0, 2);//'96'
var ch = document.frm.jumin2.value.charAt(0);//'1012345' ==> '1'
if(ch=='1' || ch=='2' || ch=='5' || ch=='6'){
birthYear = '19'+ birthYear
}else{//ch='3' '4' '7' '8'
birthYear = '20'+ birthYear
}
document.frm.year.value = birthYear;
document.frm.month.value = jumin1.substr(2, 2);//'03'
document.frm.day.value = jumin1.substr(4, 2);//'02'
}//birthChange
function ckid(){
var id = document.frm.id.value;
if(id==''){
alert('아이디를 입력!!');
return;
}
window.open('confirmid.jsp?id='+ id,'confirm',
'toolbar=no,location=no,status=no,'
+'menubar=no,scrollbars=no,resizable=no,'
+'width=300,height=200,top=200,left=300');
}//ckid
function validateCheck(){
var f = document.frm; // f == 폼 엘리먼트 객체
//정규식 정의
var jumin1Exp = new RegExp("^[\\d]{6}$");
var jumin2Exp = /^[\d]{7}$/;
var yearExp = /^[\d]{4}$/;
var zipExp = /^[\d]{5}$/;
var idExp = /^[a-zA-Z0-9]{6,20}$/;
var emailExp = /^[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]+$/;
if(!idExp.test( document.frm.id.value))
{
alert('아이디는 6~20자리!!');
//document.frm.id.focus();
f.id.focus();
}else if (f.pass.value=='')
{
alert('비번 입력');
f.pass.focus();
}else if (f.pass2.value=='')
{
alert('비번 확인 입력');
f.pass2.focus();
}else if (f.pass.value!= f.pass2.value)
{
alert('비밀번호가 일치하지 않습니다.');
f.pass.value = ''; f.pass2.value='';
f.pass.focus();
}else if (f.name.value=='')
{
alert('이름 입력');
f.name.focus();
}
/* else if (f.jumin1.value=='')
{
alert('주민번호입력');
f.jumin1.focus();
}else if (isNaN(f.jumin1.value))
{
alert('주민번호에 숫자만 입력!');
}else if (f.jumin1.value.length != 6 )
{
alert('주민번호에 6자리 숫자만 입력');
}
이거보다는 정규식 쓰는게 더 좋음*/
else if (!jumin1Exp.test(f.jumin1.value)||
!jumin2Exp.test(f.jumin2.value))
{
alert('잘못된 주민번호 입력입니다.');
f.jumin1.value=''; f.jumin2.value='';
f.jumin1.focus();
}else if (!yearExp.test(f.year.value))
{
alert('생년에 4자리 수 입력!');
f.year.value='';
f.year.focus();
}else if (!zipExp.test(f.zip.value))
{
alert('잘못된 우편번호');
f.zip.value='';
f.zip.focus();
}else if(!emailExp.test(f.email.value))
{
alert('이메일 빼애애액!');
f.email.value='';
f.email.focus();
}else if(f.job.value == '==선택==')
{
alert('직업 선택!');
}else{
//올바른, 프로그램에서 원하는 데이터 입력시
f.submit();
}
}//validateCheck()
</script>
</head>
<%-- userinput.jsp --%>
<body>
<center>
<form name="frm" action="userprocess.jsp" method="post">
<table width="600" border="0" cellpadding="5" >
<tr bgcolor="#3399cc">
<td><font size="4" color="white">사용자정보입력</font>
</tr>
<tr>
<td>안녕하세요. 이 페이지를 자유롭게 이용하려면
먼저 회원가입을 하셔야 합니다.<br>
아래의 사항들을 빠짐없이 기록해 주세요.
</td>
</tr>
</table>
<table border="1" cellpadding="5" width="600">
<tr>
<td width="100" bgcolor="#ffcccc">사용자ID<font color="red">*</font></td>
<td colspan="3"><input type="text" name="id">
<input type="button" value="중복확인" onclick="ckid()">
<font color="blue">(6자리~20자리)</font>
</td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">비밀번호<font color="red">*</font></td>
<td><input type="password" name="pass"> </td>
<td width="100" bgcolor="#ffcccc">비번확인</td>
<td><input type="password" name="pass2"> </td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">사용자이름<font color="red">*</font></td>
<td colspan="3"><input type="text" name="name"> </td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">주민번호<font color="red">*</font></td>
<td colspan="3">
<input type="text" name="jumin1" size="6" maxlength="6"
style="height:23px" >
-
<input type="password" name="jumin2" size="7" maxlength="7"
style="height:23px" onblur="birthChange()"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc" >생년월일</td>
<td colspan="3">
<input type="text" name="year" size="4" maxlength="4">년
<select name="month">
<% for(int i=1; i<13; i++){
if(i<10){%>
<option>0<%=i%></option> <%}
else{ %>
<option><%=i%></option>
<%}//else
}//for %>
</select>월
<select name="day" >
<c:forEach begin="1" end="31" var="i">
<c:if test="${i<10 }"><option>0${i}</option></c:if>
<c:if test="${i>9 }"><option>${i}</option></c:if>
</c:forEach>
</select>일
</td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">우편번호<font color="red">*</font></td>
<td colspan="3">
<input type="text" name="zip" size="5" maxlength="5"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">주소</td>
<td colspan="3"><input type="text" name="addr" size="50"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">E-Mail<font color="red">*</font></td>
<td colspan="3"><input type="text" name="email" size="30"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">직업<font color="red">*</font></td>
<td colspan="3">
<select name="job" >
<%
String jobs[]={"==선택==","학생","공무원","언론/출판","군인/경찰","일반사무직",
"영업직","기술/전문직","보건/의료","자영업","주부","기타" };
pageContext.setAttribute("jobs", jobs);
%>
<c:forEach items="${jobs }" var="jobName">
<option>${jobName }</option>
</c:forEach>
</select>
</td>
</tr>
<tr align="center">
<td colspan="4">
<%--
<script>
fuction validateCheck()
{
if(반값이라면)
{
alert('입력하세요')
}else
{
frm.submit();
}
}
</script>
=========================이렇게 하거나
등록 을 submit으로 하고 싶다면
<script>
fuction validateCheck()
{
if(반값이라면)
{
alert('입력하세요')
return false;
}else
{
return true;
}
}
</script>
<input type = "submit" value="등록"
onclick="reuturn validateCheck()">
--%>
<input type="button" value="등록" onclick="validateCheck()" >
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
- 주민번호 입력하면, onblur 통해서 birthChange() 메소드 호출하고, 해당 메소드 내에서 주민번호 앞자리 jumin1 을 substr 통해 나누고 나눈 값을 통해 다음에 들어가는 생년월일 value 넣어줌
UserInfo.java (t0717.vo안에)
private String id;
private String pass;
private String name;
private String jumin;
private String birth;
private int zip;
private String addr;
private String email;
private String job;
public String getId()
//애네들 getter setter, Constructor using field toString 까지 생성
UserInfoDAO.java
package t0717.dao;
import java.sql.SQLException;
import java.util.List;
import t0717.vo.UserInfo;
import com.ibatis.sqlmap.client.SqlMapClient;
import iba.MySqlMapClient;
public class UserInfoDAO {//DAO(Data Access Object) DB전담클래스
SqlMapClient sqlMap;//XML문서내의 sql문 호출
public UserInfoDAO() {
sqlMap = MySqlMapClient.getSqlMapInstance();
}
public boolean create(UserInfo user) {
try {
sqlMap.insert("userinfo.create", user);
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}//create
public boolean modify(UserInfo user) throws SQLException {
if(sqlMap.update("userinfo.modify", user) == 1) {
return true;
}
return false;
}//modify
public boolean remove(String id) throws SQLException {
if(sqlMap.delete("userinfo.remove", id) == 1) { //삭제된 행의 갯수가 1이라면
return true;
}
return false;
}
public UserInfo select(String id) throws SQLException {//수정폼 (DB ---> HTML)
return (UserInfo) sqlMap.queryForObject("userinfo.select",id);
}
public List<UserInfo> selectAll() {return null;}
public String selectLogin(String id) throws SQLException {
return (String) sqlMap.queryForObject("userinfo.selectLogin", id );
}//selectLogin
public Integer selectExistId(String id) throws SQLException {
return (Integer) sqlMap.queryForObject("userinfo.selectExistId", id );
}//selectExistId
}
- 어레이와 리스트
- 공통점 묶어준다, 인덱스
- 차이점 고정, 가변
userinfo.sql
drop table userinfo;
create table userinfo(
id varchar2(20) constraint userinfo_pk primary key,
pass varchar2(20) not null,
name varchar2(30) not null,
jumin varchar2(14) not null, --'960302-1012345'
birth varchar2(10), --'1996-03-02'
zip number(5) not null,
addr varchar2(300),
email varchar2(50) not null,
job varchar2(30) not null
);
SELECT * FROM USERINFO;
- 테이블 생성
userinfo.xml(mapper안에 생성시 ibatis)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd" >
<!-- userinfo.xml -->
<sqlMap namespace="userinfo">
<typeAlias alias="user" type="t0717.vo.UserInfo"/>
<insert id="create" parameterClass="user">
insert into userinfo (id,pass,name,jumin,birth,zip,addr,email,job)
values (#id#,#pass#,#name#,#jumin#,#birth#,#zip#,#addr#,#email#,#job#)
</insert>
<update id="modify" parameterClass="user">
update userinfo
set pass=#pass#, zip=#zip#, addr=#addr#, email=#email#, job=#job#
where id = #id#
</update>
<delete id="remove" parameterClass="String">
delete from userinfo
where id=#id#
</delete>
<!-- 매개변수 id,pass에 대한 로그인 처리 -->
<select id="selectLogin" parameterClass="String"
resultClass="String" >
<!-- select count(*) from userinfo where id=id and pass=pass -->
select pass from userinfo where id=#id#
</select>
<!-- 수정폼(HTML)에 출력할 내용 조회 -->
<select id="select" parameterClass="String"
resultClass="user">
select id,pass,name,jumin,birth,zip,addr,email,job
from userinfo
where id=#id#
</select>
<!-- 중복된 아이디 조회 -->
<!-- 유무만 확인하면 되니까 count사용 -->
<!-- select 결과가 여러개 나올수 있다. vo 또는 map으로 resultClass를 사용하야 한다. -->
<select id="selectExistId" parameterClass="String" resultClass="int">
select count(*)
from userinfo
where id=#id#
</select>
</sqlMap>
userprocess.jsp
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean class="t0717.vo.UserInfo" id="user"/>
<%-- UserInfo user = new UserInfo(); --%>
<% System.out.println("userBean실행==>"+ user); %>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:setProperty name="user" property="*" />
<%-- user.setId(request.getParameter("id")); --%>
<% System.out.println("setProperty실행==>"+ user);
String jumin = request.getParameter("jumin1")
+"-"+request.getParameter("jumin2");
String birth = request.getParameter("year")+"-"+
request.getParameter("month")+"-"+
request.getParameter("day");
user.setJumin(jumin);
user.setBirth(birth);
System.out.println("setJumin,setBirth실행==>"+ user);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>가입처리결과</title>
</head>
<body>
<center>
<%
//폼안의 데이터 얻기: String data = request.getParameter("name속성값");
UserInfoDAO dao = new UserInfoDAO();
if(dao.create(user)){
%>
<table width="330" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>[${param.name }]님 가입을 축하합니다.</b></td>
</tr>
<tr>
<td>
입력하신 내용대로 가입이 완료되었습니다.<br>
님께서 요청하신 아이디와 패스워드입니다.
<p align="center">아이디: ${param.id }<br>
패스워드: ${param.pass }<br><br>
<a href="userconfirm.jsp">로그인 화면</a>
</p>
</td>
</tr>
</table>
<%}else{ %>
<table width="330" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>가입이 되지않았습니다.<br>
입력내용을 다시 한번 확인해 주세요.</b></td>
</tr>
<tr>
<td>
<p align="center">입력이 정확한 경우에도 가입이 되지 않는 경우
관리자에게 문의하여 주십시요. <br>
<a href="javascript:history.back()">이전화면</a>
</p>
</td>
</tr>
</table>
<%} %>
</center>
</body>
</html>
jsp:useBean 액션 태그
<jsp:useBean id="빈이름" class="자바빈클래스이름" scope="범위"/>
id : JSP 페이지에서 자바빈 객체에 접글할 때 사용할 이름을 명시한다.
class : 패키지이름을 포함한 자바빈 클래스의 완전한 이름을 입력한다.
scope : 자바빈 객체가 저장될 영역을 지정한다. (page, request, session, application 중 하나, 기본값은 page)
JSP 페이지에서 사용할 자바빈 객체를 생성하고 지정한 영역에 저장을 한다.
지정한 영역에 이미 id 속성에서 지정한이름의 속성 값이 존재할 경우 객체를 새로 생성하지 않고 기존에 존재하는 객체를 그대로 사용한다.
각 scope의 영역별로 공유할 데이터를 쉽게 저장할 수 있다.
출처: https://gangzzang.tistory.com/entry/JSP-액션태그-jspuseBean [갱짱.study]
sqlMapConfig.xml 에 xml파일 등록!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd" >
<sqlMapConfig>
<!-- sqlMapConfig.xml
==> iBatis프레임워크(sqlMapper프레임워크)에 대한 환경설정
-->
<properties resource="./iba/conn.properties"/>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="30"
maxSessions="25"
maxTransactions="10"
useStatementNamespaces="true"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${user}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<!-- ★ 앞으로 sql문 추가되는 xml파일을 등록 ★ -->
<sqlMap resource="./mapper/counter.xml"/>
<sqlMap resource="./mapper/emp.xml"/>
<sqlMap resource="./mapper/userinfo.xml"/>
</sqlMapConfig>
- 앞으로 귀찮으면
- < sqlMap resource="./mapper/*.xml"/> 해도 됨.
service.jsp (로그인 성공 후 접속 할 수 있는 페이지)
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Session인증 페이지</title>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</head>
<%-- service.jsp --%>
<%
String login = (String)session.getAttribute("login");
if(login ==null || !login.equals("success")){//로그인 하지 않았다면!!
response.sendRedirect("userconfirm.jsp");
}
%>
<body>
<center>
<p>
<img src="<%= application.getInitParameter("imgPath")%>/ebi.gif" width="400" height="300">
<img src="${initParam.imgPath }/ebi.gif" width="400" height="300">
</p>
<p class="normalbold">이 페이지는 사용자 인증을 받아야 볼 수 있죠!</p>
<p class="normal">감사합니다....</p>
<p class="normal"><a href="userconfirm.jsp">로그아웃</a></p>
</center>
</body>
</html>
- confirmprocess.jsp 에 로그인 성공시 성공 정보(login)을 success로 남기는 세션정보를 추가해야 한다.
confirmprocess.jsp
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>로그인 처리</title>
<script type="text/javascript">
function movePage(upDel){ //upDel에는 up 또는 del이 들어감
if(upDel=='up')
location.href='modifyuser.jsp?id=${param.id}'; // 수정페이지이동
else
{
if(confirm('정말탈퇴하시겠습니까?'))
{
location.href='deleteid.jsp?id=${param.id}'; // 삭제처리페이지이동
}
}
}
</script>
</head>
<body>
<%
String id = request.getParameter("id");
String pass = request.getParameter("pass");
UserInfoDAO dao = new UserInfoDAO();
String dpass = dao.selectLogin(id);
if(dpass != null){//아이디 O
if(dpass.equals(pass)){//아이디O , 패스워드 일치
//로그인 성공 정보를 세션에 남기기 (세션 로그인)
session.setAttribute("login", "success");
//session.setAttribute("loginID", id);
%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>로그인 성공</b></td>
</tr>
<tr>
<td>
입력하신 아이디와 패스워드를<br> 확인했습니다.
<br><br>
<input type="button" value="회원정보수정" onclick="movePage('up')">
<input type="button" value="회원탈퇴" onclick="movePage('del')" >
<br><br>
<a href="service.jsp">서비스화면</a>
</td>
</tr>
</table>
<% }else{//아이디O , 패스워드 불일치%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>로그인 실패</b></td>
</tr>
<tr>
<td>
패스워드가 틀립니다.<br>
패스워드를 다시한번 확인해 주시기 바랍니다.<br><br>
<a href="userconfirm.jsp">로그인화면</a>
</td>
</tr>
</table>
<% }
}else{//아이디 X%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>로그인 실패</b></td>
</tr>
<tr>
<td>
다시 아이디를 확인하세요.<br>
만약 가입하지 않으신 경우 신규가입을 하시기 바랍니다.<br><br>
<a href="userinput.jsp">신규가입</a>
</td>
</tr>
</table>
<% }%>
</center>
</body>
</html>
- 조건( 로그인 성공, 실패 (아이디틀림, 비밀번호 틀림) ) 에 따라 뜨는 페이지를 테이블을 설정하게 함.
- 로그인 성공시 세션 정보를 남김
service.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Session인증 페이지</title>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</head>
<%-- service.jsp --%>
<%
String login = (String)session.getAttribute("login");
if(login ==null || !login.equals("success")){//로그인 하지 않았다면!!
response.sendRedirect("userconfirm.jsp");
}
%>
<body>
<center>
<p>
<img src="/TomTest/image/ebi.gif" width="400" height="300">
</p>
<p class="normalbold">이 페이지는 사용자 인증을 받아야 볼 수 있죠!</p>
<p class="normal">감사합니다....</p>
<p class="normal"><a href="sessionT4.jsp">로그아웃</a></p>
</center>
</body>
</html>
- 이건 전에 만들 서비스 창
modifyuser.jsp
<%@page import="t0717.vo.UserInfo"%>
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>사용자수정</title>
<script type="text/javascript" src="/TomTest/js/check.js"></script>
</head>
<%
UserInfoDAO dao = new UserInfoDAO();
UserInfo user = dao.select(request.getParameter("id"));
System.out.println("user>>>"+ user);
String []jumin=user.getJumin().split("-");//"960302-2012345"
//{"960302","2012345"}
String []birth = user.getBirth().split("-");//"1996-03-02"
//{"1996","03","02"}
pageContext.setAttribute("user", user);
%>
<body>
<center>
<form name="frm" action="modifyprocess.jsp" method="post">
<table width="600" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><font size="4" color="white">사용자정보수정</font>
</tr>
</table>
<table border="1" cellpadding="5" width="600">
<tr>
<td width="100" bgcolor="#ffcccc">사용자ID</td>
<td colspan="3">
<%-- <input type="text" name="id" value="<%= user.getId()%>"></td> --%>
<input type="text" name="userid" value="${user.id }" disabled>
<input type="hidden" name="id" value="${user.id }">
<%-- disabled는 못받아와, 그래서 hidden씀 --%>
</td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">비밀번호</td>
<td><input type="password" name="pass" value="${user.pass }">
</td>
<td width="100" bgcolor="#ffcccc">비번확인</td>
<td><input type="password" name="pass2" value="${user.pass }">
</td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">사용자이름</td>
<td colspan="3"><input type="text" name="name"
value="${user.name }" readonly></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">주민번호</td>
<td colspan="3"><input type="text" name="jumin1" size="6"
maxlength="6" style="height: 23px" value="<%= jumin[0]%>" readonly>
- <input type="password" name="jumin2" size="7" maxlength="7"
style="height: 23px" value="<%= jumin[1]%>" readonly></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">생년월일</td>
<td colspan="3"><input type="text" name="year" size="4"
maxlength="4" value="<%= birth[0]%>" disabled>년 <select
name="month" disabled>
<option><%=birth[1] %></option>
</select>월 <select name="day" disabled>
<option><%=birth[2] %></option>
</select>일</td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">우편번호</td>
<td colspan="3"><input type="text" name="zip" size="5"
maxlength="5" value="${user.zip }"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">주소</td>
<td colspan="3"><input type="text" name="addr" size="50"
value="${user.addr }"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">E-Mail</td>
<td colspan="3"><input type="text" name="email" size="30"
value="${user.email }"></td>
</tr>
<tr>
<td width="100" bgcolor="#ffcccc">직업</td>
<td colspan="3"><select name="job">
<%
String jobs[]={"==선택==","학생","공무원","언론/출판","군인/경찰","일반사무직",
"영업직","기술/전문직","보건/의료","자영업","주부","기타" };
for(int i=0; i<jobs.length; i++){
if(jobs[i].equals(user.getJob()))
out.print("<option selected>"+ jobs[i] +"</option>");
else
out.print("<option>"+ jobs[i] +"</option>");
} %>
</select></td>
</tr>
<tr align="center">
<td colspan="4"><input type="button" value="수정" onclick = validateCheck()>
<input
type="reset" value="취소"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
modifyprocess.jsp
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean class="t0717.vo.UserInfo" id="user" />
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:setProperty property="*" name="user" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>수정처리</title>
</head>
<body>
<center>
<%
UserInfoDAO dao = new UserInfoDAO();
try
{
if(dao.modify(user)){
%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>수정성공</b></td>
</tr>
<tr>
<td>수정이 잘되었습니다<br>
<br> <a href="service.jsp">서비스페이지</a>
</td>
</tr>
</table>
<%}else{ %>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>수정실패</b></td>
</tr>
<tr>
<td>정보수정이 되지않았습니다.<br> 입력내용을 다시확인하시고 다시수정하시기 바랍니다.<br>
<br> <a href="javascript:history.go(-1)">이전화면</a>
</td>
</tr>
</table>
<%} }
catch(Exception e)
{ %>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>수정실패</b></td>
</tr>
<tr>
<td>정보수정이 되지않았습니다.<br> 입력내용을 다시확인하시고 다시수정하시기 바랍니다.<br>
<br> <a href="javascript:history.go(-1)">이전화면</a>
</td>
</tr>
</table>
<%}
%>
</center>
</body>
</html>
confirmid.jsp
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script>
//opener : 부모 window객체
//var id = opener.document.frm.id.value;
//alert('입력(부모)창의 아이디 : ' + id)
//이렇게는 안됨, request 사용하기
</script>
</head>
<%-- confirmid.jsp --%>
<body>
<center>
<%--주소?id=yong 이렇게 나오게 하려면 --%>
<%
String id = request.getParameter("id");
System.out.println("파라미터 아이디 : " + id);
UserInfoDAO dao = new UserInfoDAO();
if( dao.selectExistId(id) == 1){ //아이디 존재 하면 1 아니면 0
%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>사용불가능</b></td>
</tr>
<tr>
<td>
이미 사용중인 아이디입니다.<br>
다른 아이디를 선택하십시요!!
</td>
</tr>
</table>
<input type="button" value="닫기" onclick="window.close()">
<% }else{ %>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>사용가능</b></td>
</tr>
<tr>
<td>
사용가능한 아이디입니다^^*
</td>
</tr>
</table>
<a href="javascript:self.close()">창닫기</a>
<% } %>
</center>
</body>
</html>
deleteid.jsp
<%@page import="t0717.dao.UserInfoDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<%
String id = request.getParameter("id");
UserInfoDAO dao = new UserInfoDAO();
if(dao.remove(id))
{
session.invalidate();
%>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>삭제성공</b></td>
</tr>
<tr>
<td>
삭제가 잘되었습니다.<br>
이용해 주셔서 감사합니다.
<br><br>
<a href="service.jsp">서비스페이지</a>
</td>
</tr>
</table>
<%
}else
{ %>
<table width="280" border="0" cellpadding="5">
<tr bgcolor="#3399cc">
<td><b>삭제실패</b></td>
</tr>
<tr>
<td>
삭제가 되지않았습니다.<br>
잠시 후 다시 시도해 보시기 바랍니다.<br><br>
<a href="javascript:history.go(-1)">이전화면</a>
</td>
</tr>
</table>
<%}
%>
</center>
</body>
</html>
'클라우드 기반 웹 개발자 과정 공부 > Servlet & JSP' 카테고리의 다른 글
190718_Day69 서플릿 필터, 리스너, 파일업로드 (0) | 2019.07.18 |
---|