미투데이 따라집기!!!
테이블 생성 SQL
- create table me2daytest(
pid number primary key,
pname varchar2(20),
particle varchar2(150),
pwdate date );
index2.jsp
- <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<html>
<head>
<script language="javascript" src="jslb_ajax.js" >
</script>
<script language="javascript">
<!--
//콜백함수(수신시에 실행된다)
function on_loaded(oj){
//응답을 취득
var res = oj.responseText
//응답된 문자열을 DIV로 출력
document.getElementById("list").innerHTML = res
}
function result(oj){
//응답을 취득
var res = oj.responseText
//응답된 문자열을 DIV로 출력
document.getElementById("result").innerHTML = res
}
//입력한 내용을 바로 업데이트 시킴.
function input(oj){
if (oj.form.article.value.length === 0) return
sendRequest(result, '&name='+oj.form.name.value+'&article='+oj.form.article.value, 'POST', 'input.jsp', true, true)
sendRequest(on_loaded, '', 'POST', 'list.jsp', true, true)
oj.form.article.value='';
}
function on_formLoad(oj){
sendRequest(on_loaded, '', 'POST', 'list.jsp', true, true)
}
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>허니몬의 me2day 떼쳇 따라잡기</title>
</head>
<body>
<h3>사용법 : 이름 입력하고 내용 입력하고 Enter 혹은 글올리기 클릭하면 됨!!</h3>
<h3>여러분은 낙장불입의 세계에 한발 들어섰습니다.</h3>
<hr>
<form>
<table>
<tr>
<th>이름</th><th>내용</th><th><!-- 스크립트 값이 들어가야하려나? document.write(var); -->
<div id='result'></div>
</th>
</tr>
<tr>
<td><input type='text' name='name' /></td><td><input type='text' name='article' size='50' maxlength='50' onkeyup='on_formLoad(this)'/></td><td><input type='button' value='글 올리기' onclick='input(this)' /></td>
</tr>
</table>
</form>
화면출력!!
<div id='list'></div>
</body>
</html>
input.jsp
- <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<jsp:useBean id="data" class="data.DataProc" scope="page"/>
<%
String name = request.getParameter("name");
String article = request.getParameter("article");
data.insertData(name,article);
out.println("처리완료");
%>
list.jsp
- <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import='java.util.*, data.*' %>
<jsp:useBean id='data' class='data.DataProc' scope='page' />
<%
Vector result = data.list();
if( result.isEmpty() == true) {
out.println("입력된 데이터가 없습니다.");
} else {
%>
<table border='1'>
<%
//vector는 0부터 시작하는 거였구나... 그걸 몰랐다!!
for( int i = 0; i < result.size(); i++){
DataBean b = (DataBean)result.elementAt(i);
String name = b.getPname();
String article = b.getParticle();
String wdate = b.getPwdate();
%>
<tr>
<td><%= name %></td><td><%= article %></td><td><%= wdate %></td>
</tr>
<%
}
%>
</table>
<%
}
%>
DataBean.jsp
- package data;
public class DataBean {
private String pname="";
private String particle="";
private String pwdate="";
public DataBean(){}
public DataBean(String pname, String particle, String pwdate){
this.pname = pname;
this.particle = particle;
this.pwdate = pwdate;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getParticle() {
return particle;
}
public void setParticle(String particle) {
this.particle = particle;
}
public String getPwdate() {
return pwdate;
}
public void setPwdate(String pwdate) {
this.pwdate = pwdate;
}
}
DataProc.java
- package data;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DataProc {
DataSource ds;
public DataProc(){
try {
InitialContext context = new InitialContext();
ds = (DataSource)context.lookup("java:comp/env/jdbc/oracle");
} catch(Exception e){
e.printStackTrace();
}
}
public void insertData(String name, String article){
Statement stat;
Connection con;
int pid = checkpid();
String sql = "INSERT INTO me2daytest values(" + pid + ",'" + name + "', '"+ article +"', sysdate)";
try{
con = ds.getConnection();
stat = con.createStatement();
stat.executeUpdate(sql);
stat.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public Vector list(){
Connection con;
Statement stat;
Vector result = new Vector();
String sql = "SELECT pname, particle, pwdate FROM me2daytest ORDER BY pwdate desc";
try {
con = ds.getConnection();
stat = con.createStatement();
ResultSet rs = stat.executeQuery(sql);
while( rs.next() ){
String name = rs.getString(1);
String article = rs.getString(2);
String wdate = rs.getString(3);
DataBean bean = new DataBean(name, article, wdate);
result.add(bean);
}
rs.close();
stat.close();
con.close();
} catch(Exception e){
e.printStackTrace();
}
return result;
}
public int checkpid(){
Connection con;
Statement stat;
int pid=0;
String sql = "SELECT max(pid) FROM me2daytest";
try {
con = ds.getConnection();
stat = con.createStatement();
ResultSet rs = stat.executeQuery(sql);
while( rs.next() ){
pid = rs.getInt(1);
}
rs.close();
stat.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return pid+1;
}
}
문제점 :
- 다른 사람이 입력한 뒤에 Reload가 되지 않는다. 이건 어떻게 해야하지? ㅡㅅ-)? 원격인터페이스를 써줘야할까? EJB 무상태 세션빈?
- 본문 입력시 입력하지 않고 입력했을 때 javascript로 거절하도록 한다.
- 페이지 나누기 기능이 필요할 듯 하다.
- 미관상 이쁘지 않다.
이 글은 스프링노트에서 작성되었습니다.
'Javascript' 카테고리의 다른 글
전화번호 검증 스크립트(숫자만 입력 가능) (0) | 2011.08.16 |
---|---|
<article> 과 <section>의 차이점 (0) | 2011.04.18 |
API 이용하는 방법 링크 (0) | 2009.06.02 |
미투데이 API CheatSheet (0) | 2009.05.20 |
Douglas Crockford : "Advanced JavaScript"(1 of 3, 2 of 3, 3 of 3) (0) | 2009.05.12 |