Web enabled Application
examples/Partial Solution (part 1&2).rar
Partial Solution (part 1&2)/commentApp-part.rar
commentApp/build/web/basic.css
/* Document : basic Created on : Mar 12, 2013, 11:22:36 AM Author : christoforos Description: Purpose of the stylesheet follows. */ root { display: block; } #menu { float: left; width:180px; padding: 0px; font-family: Arial; } #menu a:link, #menu a:visited, #menu a:active { display:block; font-size:12px; font-weight:bold; text-decoration:none; padding:4px; color:#666600 } #menu a:hover { display:block; font-size:12px; font-weight:bold; text-decoration:none; color:#CCCCCC; background-color:#666600; } #main { margin-left: 200px; font-family: Arial; }
commentApp/build/web/do_register.jsp
<%-- Document : do_register Created on : Mar 12, 2013, 11:02:38 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String nm = request.getParameter("nm"); String snm = request.getParameter("snm"); String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.registerUser(nm, snm, usn, pwd); if(me == null) response.sendRedirect("register.jsp?error"); else { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } %>
commentApp/build/web/index.jsp
<%-- Document : index Created on : Mar 12, 2013, 10:07:01 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Login to the application to view comments</h1> <form action="proc_login.jsp" method="post"> <table border="0"> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login"/></td> </tr> </table> </form> <% if(request.getParameter("error") != null) { out.println("<h3>Wrong access rights</h3>"); } %> <h3>Not a user? Click <a href="register.jsp">here</a> to register</h3> </body> </html>
commentApp/build/web/main.jsp
<%-- Document : main Created on : Mar 12, 2013, 11:13:41 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <link rel="stylesheet" type="text/css" href="basic.css"/> </head> <body> <% User me = (User) session.getAttribute("me"); if(me ==null) response.sendRedirect("index.jsp?error"); else { %> <div id="menu"> <jsp:include page="menu.jsp"/> </div> <div id="main"> <h2 align="center">Welcome <%= me.getFullName() %>!</h2> </div> <% } %> </body> </html>
commentApp/build/web/menu.jsp
<%-- Document : menu Created on : Mar 12, 2013, 11:28:58 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <% User me = (User) session.getAttribute("me"); %> <a href="addComment.jsp">Add comment</a> <a href="viewSubjComments.jsp">View comments</a> <a href="updMyComments.jsp">Update my comments</a> <% if(me.isAdv()) { %> <a href="addSubject.jsp">Add subject</a> <% } %>
commentApp/build/web/META-INF/context.xml
commentApp/build/web/META-INF/MANIFEST.MF
Manifest-Version: 1.0
commentApp/build/web/proc_login.jsp
<%-- Document : proc_login Created on : Mar 12, 2013, 10:45:25 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.checkLogin(usn, pwd); if(me != null) { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } else { response.sendRedirect("index.jsp?error"); } %>
commentApp/build/web/register.jsp
<%-- Document : register Created on : Mar 12, 2013, 10:45:13 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script type="text/javascript"> function checkPass (a, b) { if(a != b) { alert("passwords do not match"); document.getElementById("pwd").focus() } } </script> </head> <body> <h1>Login to the application to view comments</h1> <form action="do_register.jsp" method="post"> <table border="0"> <tr> <td>Name</td> <td><input type="text" name="nm"/></td> </tr> <tr> <td>Surname</td> <td><input type="text" name="snm"/></td> </tr> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd" id="pwd"/></td> </tr> <tr> <td>Retype Password</td> <td><input type="password" name="pwd2" onchange="checkPass(pwd.value, pwd2.value)"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register"/></td> </tr> </table> </form> </body> </html>
commentApp/build/web/WEB-INF/classes/.netbeans_automatic_build
commentApp/build/web/WEB-INF/classes/.netbeans_update_resources
commentApp/build/web/WEB-INF/classes/beans/Accessor.class
package beans; public synchronized class Accessor { public void Accessor(); public User checkLogin(String, String); public User registerUser(String, String, String, String); private javax.sql.DataSource getCommdb() throws javax.naming.NamingException; }
commentApp/build/web/WEB-INF/classes/beans/User.class
package beans; public synchronized class User { private String name; private String surname; private int pk; private boolean adv; public void User(); public String getFullName(); public String getName(); public void setName(String); public String getSurname(); public void setSurname(String); public int getPk(); public void setPk(int); public boolean isAdv(); public void setAdv(boolean); }
commentApp/build/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://194.42.29.147:3306/commentdb?zeroDateTimeBehavior=convertToNull commdb javax.sql.DataSource Container Shareable
commentApp/build.xml
Builds, tests, and runs the project commentApp.
commentApp/nbproject/ant-deploy.xml
commentApp/nbproject/build-impl.xml
Must set src.dir Must set test.src.dir Must set build.dir Must set build.web.dir Must set build.generated.dir Must set dist.dir Must set build.classes.dir Must set dist.javadoc.dir Must set build.test.classes.dir Must set build.test.results.dir Must set build.classes.excludes Must set dist.war The Java EE server classpath is not correctly set up - server home directory is missing. Either open the project in the IDE and assign the server or setup the server classpath manually. For example like this: ant -Dj2ee.server.home=<app_server_installation_directory> The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. Either open the project in the IDE and assign the server or setup the server classpath manually. For example like this: ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) Must set javac.includes No tests executed. The libs.CopyLibs.classpath property is not set up. This property must point to org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part of NetBeans IDE installation and is usually located at <netbeans_installation>/java<version>/ant/extra folder. Either open the project in the IDE and make sure CopyLibs library exists or setup the property manually. For example like this: ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar Must set JVM to use for profiling in profiler.info.jvm Must set profiler agent JVM arguments in profiler.info.jvmargs.agent Must select some files in the IDE or set javac.includes Must select some files in the IDE or set javac.jsp.includes Must select a file in the IDE or set jsp.includes Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. Launching ${browse.url} Must select one file in the IDE or set run.class Must select one file in the IDE or set run.class Must select one file in the IDE or set debug.class Must select one file in the IDE or set debug.class Must set fix.includes This target only works when run from inside the NetBeans IDE. Must select some files in the IDE or set javac.includes Some tests failed; see details above. Must select some files in the IDE or set test.includes Some tests failed; see details above. Must select some files in the IDE or set test.class Must select some method in the IDE or set test.method Some tests failed; see details above. Must select one file in the IDE or set test.class Must select one file in the IDE or set test.class Must select some method in the IDE or set test.method
commentApp/nbproject/genfiles.properties
build.xml.data.CRC32=44fe44ea build.xml.script.CRC32=b38bd095 [email protected] # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=44fe44ea nbproject/build-impl.xml.script.CRC32=b2fdbafc nbproject/[email protected]
commentApp/nbproject/private/private.properties
deploy.ant.properties.file=C:\\Users\\setup\\AppData\\Roaming\\NetBeans\\7.2\\tomcat70.properties j2ee.server.home=C:/Program Files/Apache Software Foundation/Apache Tomcat 7.0.27 j2ee.server.instance=tomcat70:home=C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 7.0.27:base=apache-tomcat-7.0.27.0_base user.properties.file=C:\\Users\\setup\\AppData\\Roaming\\NetBeans\\7.2\\build.properties
commentApp/nbproject/project.properties
annotation.processing.enabled=true annotation.processing.enabled.in.editor=true annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output build.classes.dir=${build.web.dir}/WEB-INF/classes build.classes.excludes=**/*.java,**/*.form build.dir=build build.generated.dir=${build.dir}/generated build.generated.sources.dir=${build.dir}/generated-sources build.test.classes.dir=${build.dir}/test/classes build.test.results.dir=${build.dir}/test/results build.web.dir=${build.dir}/web build.web.excludes=${build.classes.excludes} client.urlPart= compile.jsps=false conf.dir=${source.root}/conf debug.classpath=${build.classes.dir}:${javac.classpath} debug.test.classpath=\ ${run.test.classpath} display.browser=true dist.dir=dist dist.ear.war=${dist.dir}/${war.ear.name} dist.javadoc.dir=${dist.dir}/javadoc dist.war=${dist.dir}/${war.name} excludes= includes=** j2ee.compile.on.save=true j2ee.copy.static.files.on.save=true j2ee.deploy.on.save=true j2ee.platform=1.5 j2ee.platform.classpath=${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-3.7.2.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-util.jar j2ee.server.type=Tomcat jar.compress=false javac.classpath= # Space-separated list of extra javac options javac.compilerargs= javac.debug=true javac.deprecation=false javac.processorpath=\ ${javac.classpath} javac.source=1.5 javac.target=1.5 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir} javac.test.processorpath=\ ${javac.test.classpath} javadoc.additionalparam= javadoc.author=false javadoc.encoding=${source.encoding} javadoc.noindex=false javadoc.nonavbar=false javadoc.notree=false javadoc.preview=true javadoc.private=false javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= lib.dir=${web.docbase.dir}/WEB-INF/lib no.dependencies=false persistence.xml.dir=${conf.dir} platform.active=default_platform resource.dir=setup run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} # Space-separated list of JVM arguments used when running a class with a main method or a unit test # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): runmain.jvmargs= source.encoding=UTF-8 source.root=src src.dir=${source.root}/java test.src.dir=test war.content.additional= war.ear.name=${war.name} war.name=commentApp.war web.docbase.dir=web webinf.dir=web/WEB-INF
commentApp/nbproject/project.xml
org.netbeans.modules.web.project commentApp 1.6.5
commentApp/src/conf/MANIFEST.MF
Manifest-Version: 1.0
commentApp/src/java/beans/Accessor.java
commentApp/src/java/beans/Accessor.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
import
java
.
sql
.
Connection
;
import
java
.
sql
.
PreparedStatement
;
import
java
.
sql
.
ResultSet
;
import
java
.
sql
.
Statement
;
import
javax
.
naming
.
Context
;
import
javax
.
naming
.
InitialContext
;
import
javax
.
naming
.
NamingException
;
import
javax
.
sql
.
DataSource
;
/**
*
*
@author
christoforos
*/
public
class
Accessor
{
public
User
checkLogin
(
String
usn
,
String
pwd
)
{
/*
* connect to database
* select user with parameters
* if exists initialise user object and return
*/
//TODO
try
{
//creates a connection to the server
Connection
cn
=
getCommdb
().
getConnection
();
//prepare my sql string
String
sql
=
"SELECT * FROM user where usn = ? and pwd = ?"
;
//create prepared statement
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
//set sql parameters
pst
.
setString
(
1
,
usn
);
pst
.
setString
(
2
,
pwd
);
//call the statement and retrieve results
ResultSet
rs
=
pst
.
executeQuery
();
if
(
rs
.
next
())
{
//the usn pwd are correct
User
u
=
new
User
();
u
.
setAdv
(
rs
.
getBoolean
(
"mode"
));
u
.
setName
(
rs
.
getString
(
"name"
));
u
.
setSurname
(
rs
.
getString
(
"sname"
));
u
.
setPk
(
rs
.
getInt
(
"uid"
));
return
u
;
}
}
catch
(
Exception
e
)
{
String
msg
=
e
.
getMessage
();
}
return
null
;
}
public
User
registerUser
(
String
nm
,
String
snm
,
String
usn
,
String
pwd
)
{
/*
check if same username exist
* if not
* insert user and return
* else
* do nothing
*/
try
{
Connection
cn
=
getCommdb
().
getConnection
();
String
sql
=
"SELECT * FROM user WHERE usn = ?"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setString
(
1
,
usn
);
ResultSet
rs
=
pst
.
executeQuery
();
if
(
!
rs
.
next
())
{
sql
=
"INSERT INTO user (name, sname, usn, pwd, mode) "
+
"VALUES (?, ?, ?, ?, ?)"
;
pst
=
cn
.
prepareStatement
(
sql
,
Statement
.
RETURN_GENERATED_KEYS
);
//need this option to get pk of new record
pst
.
setString
(
1
,
nm
);
pst
.
setString
(
2
,
snm
);
pst
.
setString
(
3
,
usn
);
pst
.
setString
(
4
,
pwd
);
pst
.
setBoolean
(
5
,
false
);
pst
.
execute
();
rs
=
pst
.
getGeneratedKeys
();
//returns a resultset with the generated keys of the pst execution
rs
.
next
();
User
u
=
new
User
();
u
.
setAdv
(
false
);
u
.
setName
(
nm
);
u
.
setSurname
(
snm
);
u
.
setPk
(
rs
.
getInt
(
1
));
return
u
;
}
}
catch
(
Exception
e
)
{
String
msg
=
e
.
getMessage
();
}
//TODO
return
null
;
}
private
DataSource
getCommdb
()
throws
NamingException
{
Context
c
=
new
InitialContext
();
return
(
DataSource
)
c
.
lookup
(
"java:comp/env/commdb"
);
}
}
commentApp/src/java/beans/User.java
commentApp/src/java/beans/User.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
/**
*
*
@author
christoforos
*/
public
class
User
{
private
String
name
;
private
String
surname
;
private
int
pk
;
private
boolean
adv
;
public
String
getFullName
()
{
return
name
+
" "
+
surname
;
}
/**
*
@return
the name
*/
public
String
getName
()
{
return
name
;
}
/**
*
@param
name the name to set
*/
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
/**
*
@return
the surname
*/
public
String
getSurname
()
{
return
surname
;
}
/**
*
@param
surname the surname to set
*/
public
void
setSurname
(
String
surname
)
{
this
.
surname
=
surname
;
}
/**
*
@return
the pk
*/
public
int
getPk
()
{
return
pk
;
}
/**
*
@param
pk the pk to set
*/
public
void
setPk
(
int
pk
)
{
this
.
pk
=
pk
;
}
/**
*
@return
the adv
*/
public
boolean
isAdv
()
{
return
adv
;
}
/**
*
@param
adv the adv to set
*/
public
void
setAdv
(
boolean
adv
)
{
this
.
adv
=
adv
;
}
}
commentApp/web/basic.css
/* Document : basic Created on : Mar 12, 2013, 11:22:36 AM Author : christoforos Description: Purpose of the stylesheet follows. */ root { display: block; } #menu { float: left; width:180px; padding: 0px; font-family: Arial; } #menu a:link, #menu a:visited, #menu a:active { display:block; font-size:12px; font-weight:bold; text-decoration:none; padding:4px; color:#666600 } #menu a:hover { display:block; font-size:12px; font-weight:bold; text-decoration:none; color:#CCCCCC; background-color:#666600; } #main { margin-left: 200px; font-family: Arial; }
commentApp/web/do_register.jsp
<%-- Document : do_register Created on : Mar 12, 2013, 11:02:38 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String nm = request.getParameter("nm"); String snm = request.getParameter("snm"); String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.registerUser(nm, snm, usn, pwd); if(me == null) response.sendRedirect("register.jsp?error"); else { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } %>
commentApp/web/index.jsp
<%-- Document : index Created on : Mar 12, 2013, 10:07:01 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Login to the application to view comments</h1> <form action="proc_login.jsp" method="post"> <table border="0"> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login"/></td> </tr> </table> </form> <% if(request.getParameter("error") != null) { out.println("<h3>Wrong access rights</h3>"); } %> <h3>Not a user? Click <a href="register.jsp">here</a> to register</h3> </body> </html>
commentApp/web/main.jsp
<%-- Document : main Created on : Mar 12, 2013, 11:13:41 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <link rel="stylesheet" type="text/css" href="basic.css"/> </head> <body> <% User me = (User) session.getAttribute("me"); if(me ==null) response.sendRedirect("index.jsp?error"); else { %> <div id="menu"> <jsp:include page="menu.jsp"/> </div> <div id="main"> <h2 align="center">Welcome <%= me.getFullName() %>!</h2> </div> <% } %> </body> </html>
commentApp/web/menu.jsp
<%-- Document : menu Created on : Mar 12, 2013, 11:28:58 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <% User me = (User) session.getAttribute("me"); %> <a href="addComment.jsp">Add comment</a> <a href="viewSubjComments.jsp">View comments</a> <a href="updMyComments.jsp">Update my comments</a> <% if(me.isAdv()) { %> <a href="addSubject.jsp">Add subject</a> <% } %>
commentApp/web/META-INF/context.xml
commentApp/web/proc_login.jsp
<%-- Document : proc_login Created on : Mar 12, 2013, 10:45:25 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.checkLogin(usn, pwd); if(me != null) { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } else { response.sendRedirect("index.jsp?error"); } %>
commentApp/web/register.jsp
<%-- Document : register Created on : Mar 12, 2013, 10:45:13 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script type="text/javascript"> function checkPass (a, b) { if(a != b) { alert("passwords do not match"); document.getElementById("pwd").focus() } } </script> </head> <body> <h1>Login to the application to view comments</h1> <form action="do_register.jsp" method="post"> <table border="0"> <tr> <td>Name</td> <td><input type="text" name="nm"/></td> </tr> <tr> <td>Surname</td> <td><input type="text" name="snm"/></td> </tr> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd" id="pwd"/></td> </tr> <tr> <td>Retype Password</td> <td><input type="password" name="pwd2" onchange="checkPass(pwd.value, pwd2.value)"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register"/></td> </tr> </table> </form> </body> </html>
commentApp/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://194.42.29.147:3306/commentdb?zeroDateTimeBehavior=convertToNull commdb javax.sql.DataSource Container Shareable
Partial Solution (part 1&2)/commentApp-step2.rar
commentApp/build/web/addComment.jsp
<%-- Document : addComment Created on : 19-Mar-2013, 15:25:34 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Subject"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Enter comment details</h1> <form action="proc_addComm.jsp" method="post"> <table border ="0"> <tr> <td>Subject</td> <td> <select name="sbj"> <% List<Subject> sls = bean.getSubjects(); for(Subject sbj : sls) { %> <option value=<%= sbj.getPk()%> ><%= sbj.getName() %> </option> <% } %> </select> </td> </tr> <tr> <td>Title</td> <td><input type="text" name="tlt"/></td> </tr> <tr> <td>Content</td> <td><textarea rows="5" cols="50" name="cont"></textarea> </td> </tr> <tr> <td colspan="2"><input type="submit" value="Add"/></td> </tr> </table> </form> </body> </html>
commentApp/build/web/basic.css
/* Document : basic Created on : Mar 12, 2013, 11:22:36 AM Author : christoforos Description: Purpose of the stylesheet follows. */ root { display: block; } #menu { float: left; width:180px; padding: 0px; font-family: Arial; } #menu a:link, #menu a:visited, #menu a:active { display:block; font-size:12px; font-weight:bold; text-decoration:none; padding:4px; color:#666600 } #menu a:hover { display:block; font-size:12px; font-weight:bold; text-decoration:none; color:#CCCCCC; background-color:#666600; } #main { margin-left: 200px; font-family: Arial; }
commentApp/build/web/do_register.jsp
<%-- Document : do_register Created on : Mar 12, 2013, 11:02:38 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String nm = request.getParameter("nm"); String snm = request.getParameter("snm"); String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.registerUser(nm, snm, usn, pwd); if(me == null) response.sendRedirect("register.jsp?error"); else { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } %>
commentApp/build/web/index.jsp
<%-- Document : index Created on : Mar 12, 2013, 10:07:01 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Login to the application to view comments</h1> <form action="proc_login.jsp" method="post"> <table border="0"> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login"/></td> </tr> </table> </form> <% if(request.getParameter("error") != null) { out.println("<h3>Wrong access rights</h3>"); } %> <h3>Not a user? Click <a href="register.jsp">here</a> to register</h3> </body> </html>
commentApp/build/web/main.jsp
<%-- Document : main Created on : Mar 12, 2013, 11:13:41 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <link rel="stylesheet" type="text/css" href="basic.css"/> </head> <body> <% User me = (User) session.getAttribute("me"); if(me ==null) response.sendRedirect("index.jsp?error"); else { %> <div id="menu"> <jsp:include page="menu.jsp"/> </div> <div id="main"> <h2 align="center">Welcome <%= me.getFullName() %>!</h2> </div> <% } %> </body> </html>
commentApp/build/web/menu.jsp
<%-- Document : menu Created on : Mar 12, 2013, 11:28:58 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <% User me = (User) session.getAttribute("me"); %> <a href="addComment.jsp">Add comment</a> <a href="viewSubjComments.jsp">View comments</a> <a href="updMyComments.jsp">Update my comments</a> <% if(me.isAdv()) { %> <a href="addSubject.jsp">Add subject</a> <% } %>
commentApp/build/web/META-INF/context.xml
commentApp/build/web/META-INF/MANIFEST.MF
Manifest-Version: 1.0
commentApp/build/web/proc_addComm.jsp
<%-- Document : proc_addComm Created on : 19-Mar-2013, 15:51:09 Author : setup --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String title = request.getParameter("tlt"); String content = request.getParameter("cont"); String sbj = request.getParameter("sbj"); User me = (User) session.getAttribute("me"); boolean success = bean.addComment(me.getPk(), Integer.parseInt(sbj), title, content); if(success) response.sendRedirect("main.jsp"); else response.sendRedirect("main.jsp?error"); %>
commentApp/build/web/proc_login.jsp
<%-- Document : proc_login Created on : Mar 12, 2013, 10:45:25 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.checkLogin(usn, pwd); if(me != null) { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } else { response.sendRedirect("index.jsp?error"); } %>
commentApp/build/web/register.jsp
<%-- Document : register Created on : Mar 12, 2013, 10:45:13 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script type="text/javascript"> function checkPass (a, b) { if(a != b) { alert("passwords do not match"); document.getElementById("pwd").focus() } } </script> </head> <body> <h1>Login to the application to view comments</h1> <form action="do_register.jsp" method="post"> <table border="0"> <tr> <td>Name</td> <td><input type="text" name="nm"/></td> </tr> <tr> <td>Surname</td> <td><input type="text" name="snm"/></td> </tr> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd" id="pwd"/></td> </tr> <tr> <td>Retype Password</td> <td><input type="password" name="pwd2" onchange="checkPass(pwd.value, pwd2.value)"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register"/></td> </tr> </table> </form> </body> </html>
commentApp/build/web/show_comments.jsp
<%-- Document : show_comments Created on : 19-Mar-2013, 16:14:47 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Comment"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% int sbj = Integer.parseInt(request.getParameter("sbj")); List<Comment> comments = bean.getComments(sbj); %> <h1>Relevant Comments for <%= comments.get(0).getSbjTitle() %></h1> <% for(Comment c : comments) { %> From <%= c.getAuthor()%>, <br/> <b><%= c.getTitle()%></b><br/> <%= c.getContent()%> <hr/> <% } %> </body> </html>
commentApp/build/web/viewSubjComments.jsp
<%-- Document : viewSubjComments Created on : 19-Mar-2013, 16:12:42 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Subject"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Enter comment details</h1> <form action="show_comments.jsp" method="post"> <table border ="0"> <tr> <td>Subject</td> <td> <select name="sbj"> <% List<Subject> sls = bean.getSubjects(); for(Subject sbj : sls) { %> <option value=<%= sbj.getPk()%> ><%= sbj.getName() %> </option> <% } %> </select> </td> </tr> <tr> <td colspan="2"><input type="submit" value="View"/></td> </tr> </table> </form> </body> </html>
commentApp/build/web/WEB-INF/classes/.netbeans_automatic_build
commentApp/build/web/WEB-INF/classes/.netbeans_update_resources
commentApp/build/web/WEB-INF/classes/beans/Accessor.class
package beans; public synchronized class Accessor { public void Accessor(); public java.util.List getComments(long); public boolean addComment(int, long, String, String); public java.util.List getSubjects(); public User checkLogin(String, String); public User registerUser(String, String, String, String); private javax.sql.DataSource getCommdb() throws javax.naming.NamingException; }
commentApp/build/web/WEB-INF/classes/beans/Comment.class
package beans; public synchronized class Comment { private long pk; private String sbjTitle; private String author; private String title; private String content; public void Comment(); public long getPk(); public void setPk(long); public String getSbjTitle(); public void setSbjTitle(String); public String getAuthor(); public void setAuthor(String); public String getTitle(); public void setTitle(String); public String getContent(); public void setContent(String); }
commentApp/build/web/WEB-INF/classes/beans/Subject.class
package beans; public synchronized class Subject { private String name; private long pk; public void Subject(); public String getName(); public void setName(String); public long getPk(); public void setPk(long); }
commentApp/build/web/WEB-INF/classes/beans/User.class
package beans; public synchronized class User { private String name; private String surname; private int pk; private boolean adv; public void User(); public String getFullName(); public String getName(); public void setName(String); public String getSurname(); public void setSurname(String); public int getPk(); public void setPk(int); public boolean isAdv(); public void setAdv(boolean); }
commentApp/build/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://194.42.29.147:3306/commentdb?zeroDateTimeBehavior=convertToNull commdb javax.sql.DataSource Container Shareable
commentApp/build.xml
Builds, tests, and runs the project commentApp.
commentApp/nbproject/ant-deploy.xml
commentApp/nbproject/build-impl.xml
Must set src.dir Must set test.src.dir Must set build.dir Must set build.web.dir Must set build.generated.dir Must set dist.dir Must set build.classes.dir Must set dist.javadoc.dir Must set build.test.classes.dir Must set build.test.results.dir Must set build.classes.excludes Must set dist.war The Java EE server classpath is not correctly set up - server home directory is missing. Either open the project in the IDE and assign the server or setup the server classpath manually. For example like this: ant -Dj2ee.server.home=<app_server_installation_directory> The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. Either open the project in the IDE and assign the server or setup the server classpath manually. For example like this: ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) Must set javac.includes No tests executed. The libs.CopyLibs.classpath property is not set up. This property must point to org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part of NetBeans IDE installation and is usually located at <netbeans_installation>/java<version>/ant/extra folder. Either open the project in the IDE and make sure CopyLibs library exists or setup the property manually. For example like this: ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar Must set JVM to use for profiling in profiler.info.jvm Must set profiler agent JVM arguments in profiler.info.jvmargs.agent Must select some files in the IDE or set javac.includes Must select some files in the IDE or set javac.jsp.includes Must select a file in the IDE or set jsp.includes Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. Launching ${browse.url} Must select one file in the IDE or set run.class Must select one file in the IDE or set run.class Must select one file in the IDE or set debug.class Must select one file in the IDE or set debug.class Must set fix.includes This target only works when run from inside the NetBeans IDE. Must select some files in the IDE or set javac.includes Some tests failed; see details above. Must select some files in the IDE or set test.includes Some tests failed; see details above. Must select some files in the IDE or set test.class Must select some method in the IDE or set test.method Some tests failed; see details above. Must select one file in the IDE or set test.class Must select one file in the IDE or set test.class Must select some method in the IDE or set test.method
commentApp/nbproject/genfiles.properties
build.xml.data.CRC32=44fe44ea build.xml.script.CRC32=b38bd095 [email protected] # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=44fe44ea nbproject/build-impl.xml.script.CRC32=b2fdbafc nbproject/[email protected]
commentApp/nbproject/private/private.properties
deploy.ant.properties.file=C:\\Users\\setup\\AppData\\Roaming\\NetBeans\\7.2\\tomcat70.properties j2ee.server.domain=C:/Users/setup/AppData/Roaming/NetBeans/7.2/apache-tomcat-7.0.27.0_base j2ee.server.home=C:/Program Files/Apache Software Foundation/Apache Tomcat 7.0.27 j2ee.server.instance=tomcat70:home=C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 7.0.27:base=apache-tomcat-7.0.27.0_base user.properties.file=C:\\Users\\setup\\AppData\\Roaming\\NetBeans\\7.2\\build.properties
commentApp/nbproject/project.properties
annotation.processing.enabled=true annotation.processing.enabled.in.editor=true annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output build.classes.dir=${build.web.dir}/WEB-INF/classes build.classes.excludes=**/*.java,**/*.form build.dir=build build.generated.dir=${build.dir}/generated build.generated.sources.dir=${build.dir}/generated-sources build.test.classes.dir=${build.dir}/test/classes build.test.results.dir=${build.dir}/test/results build.web.dir=${build.dir}/web build.web.excludes=${build.classes.excludes} client.urlPart= compile.jsps=false conf.dir=${source.root}/conf debug.classpath=${build.classes.dir}:${javac.classpath} debug.test.classpath=\ ${run.test.classpath} display.browser=true dist.dir=dist dist.ear.war=${dist.dir}/${war.ear.name} dist.javadoc.dir=${dist.dir}/javadoc dist.war=${dist.dir}/${war.name} excludes= includes=** j2ee.compile.on.save=true j2ee.copy.static.files.on.save=true j2ee.deploy.on.save=true j2ee.platform=1.5 j2ee.platform.classpath=${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-3.7.2.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/mysql-connector-java-5.1.18-bin.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-util.jar j2ee.server.type=Tomcat jar.compress=false javac.classpath= # Space-separated list of extra javac options javac.compilerargs= javac.debug=true javac.deprecation=false javac.processorpath=\ ${javac.classpath} javac.source=1.5 javac.target=1.5 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir} javac.test.processorpath=\ ${javac.test.classpath} javadoc.additionalparam= javadoc.author=false javadoc.encoding=${source.encoding} javadoc.noindex=false javadoc.nonavbar=false javadoc.notree=false javadoc.preview=true javadoc.private=false javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= lib.dir=${web.docbase.dir}/WEB-INF/lib no.dependencies=false persistence.xml.dir=${conf.dir} platform.active=default_platform resource.dir=setup run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} # Space-separated list of JVM arguments used when running a class with a main method or a unit test # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): runmain.jvmargs= source.encoding=UTF-8 source.root=src src.dir=${source.root}/java test.src.dir=test war.content.additional= war.ear.name=${war.name} war.name=commentApp.war web.docbase.dir=web webinf.dir=web/WEB-INF
commentApp/nbproject/project.xml
org.netbeans.modules.web.project commentApp 1.6.5
commentApp/src/conf/MANIFEST.MF
Manifest-Version: 1.0
commentApp/src/java/beans/Accessor.java
commentApp/src/java/beans/Accessor.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
import
java
.
sql
.
Connection
;
import
java
.
sql
.
PreparedStatement
;
import
java
.
sql
.
ResultSet
;
import
java
.
sql
.
Statement
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
List
;
import
javax
.
naming
.
Context
;
import
javax
.
naming
.
InitialContext
;
import
javax
.
naming
.
NamingException
;
import
javax
.
sql
.
DataSource
;
/**
*
*
@author
christoforos
*/
public
class
Accessor
{
public
List
<
Comment
>
getComments
(
long
sbj
)
{
try
{
Connection
cn
=
getCommdb
().
getConnection
();
String
sql
=
"SELECT c.cid, c.title, c.content, u.name, u.sname, s.subj_title"
+
" FROM comment c INNER JOIN user u on u.uid = c.user"
+
" INNER JOIN subject s on s.sid = c.subject"
+
" WHERE s.sid = ?"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setLong
(
1
,
sbj
);
ResultSet
rs
=
pst
.
executeQuery
();
ArrayList
<
Comment
>
comments
=
new
ArrayList
<
Comment
>
();
while
(
rs
.
next
())
{
Comment
c
=
new
Comment
();
c
.
setAuthor
(
rs
.
getString
(
"name"
)
+
" "
+
rs
.
getString
(
"sname"
));
c
.
setContent
(
rs
.
getString
(
"content"
));
c
.
setPk
(
rs
.
getLong
(
"cid"
));
c
.
setSbjTitle
(
rs
.
getString
(
"subj_title"
));
c
.
setTitle
(
rs
.
getString
(
"title"
));
comments
.
add
(
c
);
}
return
comments
;
}
catch
(
Exception
e
)
{}
return
null
;
}
public
boolean
addComment
(
int
user
,
long
subject
,
String
title
,
String
content
)
{
try
{
Connection
cn
=
getCommdb
().
getConnection
();
String
sql
=
"INSERT INTO comment (user, subject, title, content) "
+
"VALUES (?, ?, ?, ?) "
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setInt
(
1
,
user
);
pst
.
setLong
(
2
,
subject
);
pst
.
setString
(
3
,
title
);
pst
.
setString
(
4
,
content
);
pst
.
execute
();
return
true
;
}
catch
(
Exception
e
)
{}
return
false
;
}
public
List
<
Subject
>
getSubjects
()
{
try
{
Connection
cn
=
getCommdb
().
getConnection
();
String
sql
=
"SELECT * FROM subject"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
ResultSet
rs
=
pst
.
executeQuery
();
ArrayList
<
Subject
>
ls
=
new
ArrayList
<
Subject
>
();
while
(
rs
.
next
())
{
Subject
s
=
new
Subject
();
s
.
setPk
(
rs
.
getLong
(
"sid"
));
s
.
setName
(
rs
.
getString
(
"subj_title"
));
ls
.
add
(
s
);
}
return
ls
;
}
catch
(
Exception
e
)
{
}
return
null
;
}
public
User
checkLogin
(
String
usn
,
String
pwd
)
{
/*
* connect to database
* select user with parameters
* if exists initialise user object and return
*/
//TODO
try
{
//creates a connection to the server
Connection
cn
=
getCommdb
().
getConnection
();
//prepare my sql string
String
sql
=
"SELECT * FROM user where usn = ? and pwd = ?"
;
//create prepared statement
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
//set sql parameters
pst
.
setString
(
1
,
usn
);
pst
.
setString
(
2
,
pwd
);
//call the statement and retrieve results
ResultSet
rs
=
pst
.
executeQuery
();
if
(
rs
.
next
())
{
//the usn pwd are correct
User
u
=
new
User
();
u
.
setAdv
(
rs
.
getBoolean
(
"mode"
));
u
.
setName
(
rs
.
getString
(
"name"
));
u
.
setSurname
(
rs
.
getString
(
"sname"
));
u
.
setPk
(
rs
.
getInt
(
"uid"
));
return
u
;
}
}
catch
(
Exception
e
)
{
String
msg
=
e
.
getMessage
();
}
return
null
;
}
public
User
registerUser
(
String
nm
,
String
snm
,
String
usn
,
String
pwd
)
{
/*
check if same username exist
* if not
* insert user and return
* else
* do nothing
*/
try
{
Connection
cn
=
getCommdb
().
getConnection
();
String
sql
=
"SELECT * FROM user WHERE usn = ?"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setString
(
1
,
usn
);
ResultSet
rs
=
pst
.
executeQuery
();
if
(
!
rs
.
next
())
{
sql
=
"INSERT INTO user (name, sname, usn, pwd, mode) "
+
"VALUES (?, ?, ?, ?, ?)"
;
pst
=
cn
.
prepareStatement
(
sql
,
Statement
.
RETURN_GENERATED_KEYS
);
//need this option to get pk of new record
pst
.
setString
(
1
,
nm
);
pst
.
setString
(
2
,
snm
);
pst
.
setString
(
3
,
usn
);
pst
.
setString
(
4
,
pwd
);
pst
.
setBoolean
(
5
,
false
);
pst
.
execute
();
rs
=
pst
.
getGeneratedKeys
();
//returns a resultset with the generated keys of the pst execution
rs
.
next
();
User
u
=
new
User
();
u
.
setAdv
(
false
);
u
.
setName
(
nm
);
u
.
setSurname
(
snm
);
u
.
setPk
(
rs
.
getInt
(
1
));
return
u
;
}
}
catch
(
Exception
e
)
{
String
msg
=
e
.
getMessage
();
}
//TODO
return
null
;
}
private
DataSource
getCommdb
()
throws
NamingException
{
Context
c
=
new
InitialContext
();
return
(
DataSource
)
c
.
lookup
(
"java:comp/env/commdb"
);
}
}
commentApp/src/java/beans/Comment.java
commentApp/src/java/beans/Comment.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
/**
*
*
@author
setup
*/
public
class
Comment
{
private
long
pk
;
private
String
sbjTitle
;
private
String
author
;
private
String
title
;
private
String
content
;
/**
*
@return
the pk
*/
public
long
getPk
()
{
return
pk
;
}
/**
*
@param
pk the pk to set
*/
public
void
setPk
(
long
pk
)
{
this
.
pk
=
pk
;
}
/**
*
@return
the sbjTitle
*/
public
String
getSbjTitle
()
{
return
sbjTitle
;
}
/**
*
@param
sbjTitle the sbjTitle to set
*/
public
void
setSbjTitle
(
String
sbjTitle
)
{
this
.
sbjTitle
=
sbjTitle
;
}
/**
*
@return
the author
*/
public
String
getAuthor
()
{
return
author
;
}
/**
*
@param
author the author to set
*/
public
void
setAuthor
(
String
author
)
{
this
.
author
=
author
;
}
/**
*
@return
the title
*/
public
String
getTitle
()
{
return
title
;
}
/**
*
@param
title the title to set
*/
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
/**
*
@return
the content
*/
public
String
getContent
()
{
return
content
;
}
/**
*
@param
content the content to set
*/
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
}
commentApp/src/java/beans/Subject.java
commentApp/src/java/beans/Subject.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
/**
*
*
@author
setup
*/
public
class
Subject
{
private
String
name
;
private
long
pk
;
/**
*
@return
the name
*/
public
String
getName
()
{
return
name
;
}
/**
*
@param
name the name to set
*/
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
/**
*
@return
the pk
*/
public
long
getPk
()
{
return
pk
;
}
/**
*
@param
pk the pk to set
*/
public
void
setPk
(
long
pk
)
{
this
.
pk
=
pk
;
}
}
commentApp/src/java/beans/User.java
commentApp/src/java/beans/User.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
beans
;
/**
*
*
@author
christoforos
*/
public
class
User
{
private
String
name
;
private
String
surname
;
private
int
pk
;
private
boolean
adv
;
public
String
getFullName
()
{
return
name
+
" "
+
surname
;
}
/**
*
@return
the name
*/
public
String
getName
()
{
return
name
;
}
/**
*
@param
name the name to set
*/
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
/**
*
@return
the surname
*/
public
String
getSurname
()
{
return
surname
;
}
/**
*
@param
surname the surname to set
*/
public
void
setSurname
(
String
surname
)
{
this
.
surname
=
surname
;
}
/**
*
@return
the pk
*/
public
int
getPk
()
{
return
pk
;
}
/**
*
@param
pk the pk to set
*/
public
void
setPk
(
int
pk
)
{
this
.
pk
=
pk
;
}
/**
*
@return
the adv
*/
public
boolean
isAdv
()
{
return
adv
;
}
/**
*
@param
adv the adv to set
*/
public
void
setAdv
(
boolean
adv
)
{
this
.
adv
=
adv
;
}
}
commentApp/web/addComment.jsp
<%-- Document : addComment Created on : 19-Mar-2013, 15:25:34 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Subject"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Enter comment details</h1> <form action="proc_addComm.jsp" method="post"> <table border ="0"> <tr> <td>Subject</td> <td> <select name="sbj"> <% List<Subject> sls = bean.getSubjects(); for(Subject sbj : sls) { %> <option value=<%= sbj.getPk()%> ><%= sbj.getName() %> </option> <% } %> </select> </td> </tr> <tr> <td>Title</td> <td><input type="text" name="tlt"/></td> </tr> <tr> <td>Content</td> <td><textarea rows="5" cols="50" name="cont"></textarea> </td> </tr> <tr> <td colspan="2"><input type="submit" value="Add"/></td> </tr> </table> </form> </body> </html>
commentApp/web/basic.css
/* Document : basic Created on : Mar 12, 2013, 11:22:36 AM Author : christoforos Description: Purpose of the stylesheet follows. */ root { display: block; } #menu { float: left; width:180px; padding: 0px; font-family: Arial; } #menu a:link, #menu a:visited, #menu a:active { display:block; font-size:12px; font-weight:bold; text-decoration:none; padding:4px; color:#666600 } #menu a:hover { display:block; font-size:12px; font-weight:bold; text-decoration:none; color:#CCCCCC; background-color:#666600; } #main { margin-left: 200px; font-family: Arial; }
commentApp/web/do_register.jsp
<%-- Document : do_register Created on : Mar 12, 2013, 11:02:38 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String nm = request.getParameter("nm"); String snm = request.getParameter("snm"); String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.registerUser(nm, snm, usn, pwd); if(me == null) response.sendRedirect("register.jsp?error"); else { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } %>
commentApp/web/index.jsp
<%-- Document : index Created on : Mar 12, 2013, 10:07:01 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Login to the application to view comments</h1> <form action="proc_login.jsp" method="post"> <table border="0"> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login"/></td> </tr> </table> </form> <% if(request.getParameter("error") != null) { out.println("<h3>Wrong access rights</h3>"); } %> <h3>Not a user? Click <a href="register.jsp">here</a> to register</h3> </body> </html>
commentApp/web/main.jsp
<%-- Document : main Created on : Mar 12, 2013, 11:13:41 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <link rel="stylesheet" type="text/css" href="basic.css"/> </head> <body> <% User me = (User) session.getAttribute("me"); if(me ==null) response.sendRedirect("index.jsp?error"); else { %> <div id="menu"> <jsp:include page="menu.jsp"/> </div> <div id="main"> <h2 align="center">Welcome <%= me.getFullName() %>!</h2> </div> <% } %> </body> </html>
commentApp/web/menu.jsp
<%-- Document : menu Created on : Mar 12, 2013, 11:28:58 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <% User me = (User) session.getAttribute("me"); %> <a href="addComment.jsp">Add comment</a> <a href="viewSubjComments.jsp">View comments</a> <a href="updMyComments.jsp">Update my comments</a> <% if(me.isAdv()) { %> <a href="addSubject.jsp">Add subject</a> <% } %>
commentApp/web/META-INF/context.xml
commentApp/web/proc_addComm.jsp
<%-- Document : proc_addComm Created on : 19-Mar-2013, 15:51:09 Author : setup --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String title = request.getParameter("tlt"); String content = request.getParameter("cont"); String sbj = request.getParameter("sbj"); User me = (User) session.getAttribute("me"); boolean success = bean.addComment(me.getPk(), Integer.parseInt(sbj), title, content); if(success) response.sendRedirect("main.jsp"); else response.sendRedirect("main.jsp?error"); %>
commentApp/web/proc_login.jsp
<%-- Document : proc_login Created on : Mar 12, 2013, 10:45:25 AM Author : christoforos --%> <%@page import="beans.User"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <% String usn = request.getParameter("usn"); String pwd = request.getParameter("pwd"); User me = bean.checkLogin(usn, pwd); if(me != null) { session.setAttribute("me", me); response.sendRedirect("main.jsp"); } else { response.sendRedirect("index.jsp?error"); } %>
commentApp/web/register.jsp
<%-- Document : register Created on : Mar 12, 2013, 10:45:13 AM Author : christoforos --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script type="text/javascript"> function checkPass (a, b) { if(a != b) { alert("passwords do not match"); document.getElementById("pwd").focus() } } </script> </head> <body> <h1>Login to the application to view comments</h1> <form action="do_register.jsp" method="post"> <table border="0"> <tr> <td>Name</td> <td><input type="text" name="nm"/></td> </tr> <tr> <td>Surname</td> <td><input type="text" name="snm"/></td> </tr> <tr> <td>Username</td> <td><input type="text" name="usn"/></td> </tr> <tr> <td>Password</td> <td><input type="password" name="pwd" id="pwd"/></td> </tr> <tr> <td>Retype Password</td> <td><input type="password" name="pwd2" onchange="checkPass(pwd.value, pwd2.value)"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register"/></td> </tr> </table> </form> </body> </html>
commentApp/web/show_comments.jsp
<%-- Document : show_comments Created on : 19-Mar-2013, 16:14:47 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Comment"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% int sbj = Integer.parseInt(request.getParameter("sbj")); List<Comment> comments = bean.getComments(sbj); %> <h1>Relevant Comments for <%= comments.get(0).getSbjTitle() %></h1> <% for(Comment c : comments) { %> From <%= c.getAuthor()%>, <br/> <b><%= c.getTitle()%></b><br/> <%= c.getContent()%> <hr/> <% } %> </body> </html>
commentApp/web/viewSubjComments.jsp
<%-- Document : viewSubjComments Created on : 19-Mar-2013, 16:12:42 Author : setup --%> <%@page import="java.util.List"%> <%@page import="beans.Subject"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <jsp:useBean id="bean" class="beans.Accessor" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Enter comment details</h1> <form action="show_comments.jsp" method="post"> <table border ="0"> <tr> <td>Subject</td> <td> <select name="sbj"> <% List<Subject> sls = bean.getSubjects(); for(Subject sbj : sls) { %> <option value=<%= sbj.getPk()%> ><%= sbj.getName() %> </option> <% } %> </select> </td> </tr> <tr> <td colspan="2"><input type="submit" value="View"/></td> </tr> </table> </form> </body> </html>
commentApp/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://194.42.29.147:3306/commentdb?zeroDateTimeBehavior=convertToNull commdb javax.sql.DataSource Container Shareable
Partial Solution (part 1&2)/commentDB_20130319_1659.sql
-- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.45-community /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- -- Create schema commentdb -- CREATE DATABASE IF NOT EXISTS commentdb; USE commentdb; -- -- Definition of table `comment` -- DROP TABLE IF EXISTS `comment`; CREATE TABLE `comment` ( `cid` int(10) unsigned NOT NULL AUTO_INCREMENT, `user` int(10) unsigned NOT NULL, `subject` int(10) unsigned NOT NULL, `title` varchar(45) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`cid`), KEY `FK_user` (`user`), KEY `FK_subj` (`subject`), CONSTRAINT `FK_subj` FOREIGN KEY (`subject`) REFERENCES `subject` (`sid`), CONSTRAINT `FK_user` FOREIGN KEY (`user`) REFERENCES `user` (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; -- -- Dumping data for table `comment` -- /*!40000 ALTER TABLE `comment` DISABLE KEYS */; INSERT INTO `comment` (`cid`,`user`,`subject`,`title`,`content`) VALUES (1,1,2,'m-tier','This looks involved but it is logical. i just need to practice'), (2,1,1,'Racket','I like functional programming. it\'s cool'), (3,13,1,'Hi','I love JAVA!!!'), (4,14,2,'',''), (5,1,4,'none','pafos ole'), (6,1,2,'ALO','Re kostaki na sou pw ena anekdoto?'), (7,1,2,'com2',''); /*!40000 ALTER TABLE `comment` ENABLE KEYS */; -- -- Definition of table `subject` -- DROP TABLE IF EXISTS `subject`; CREATE TABLE `subject` ( `sid` int(10) unsigned NOT NULL AUTO_INCREMENT, `subj_title` varchar(45) NOT NULL, `descr` text NOT NULL, PRIMARY KEY (`sid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -- -- Dumping data for table `subject` -- /*!40000 ALTER TABLE `subject` DISABLE KEYS */; INSERT INTO `subject` (`sid`,`subj_title`,`descr`) VALUES (1,'Programming Languages','Discussion on various aspects of programming languages and comparison of features found in them'), (2,'Web Development','Discussion on server side and client side programming advances'), (3,'Optimization','Discussion on combinatorial optimization problems'), (4,'Supply Chain Management','Discussion on SCM and OM practices'); /*!40000 ALTER TABLE `subject` ENABLE KEYS */; -- -- Definition of table `user` -- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `uid` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `sname` varchar(45) NOT NULL, `usn` varchar(45) NOT NULL, `pwd` varchar(45) NOT NULL, `mode` tinyint(1) NOT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1; -- -- Dumping data for table `user` -- /*!40000 ALTER TABLE `user` DISABLE KEYS */; INSERT INTO `user` (`uid`,`name`,`sname`,`usn`,`pwd`,`mode`) VALUES (1,'Maria','Antoniou','user1','1234',0), (2,'Andreas','Nicolaou','user2','5678',0), (3,'Christoforos','Charalambous','user3','something',1), (12,'Marios','Koshiaris','whatever','qwe',0), (13,'blabla','','blabla','1234',0), (14,'Marios','Andreou','marios','omonoia',0); /*!40000 ALTER TABLE `user` ENABLE KEYS */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
examples/Transaction application example.rar
Transaction application example/bankDB.sql
-- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.45-community /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- -- Create schema bank -- CREATE DATABASE IF NOT EXISTS bank; USE bank; -- -- Definition of table `account` -- DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `aid` int(10) unsigned NOT NULL AUTO_INCREMENT, `aNum` int(10) unsigned NOT NULL, `pin` int(10) unsigned NOT NULL, `balance` int(10) unsigned NOT NULL, `limit` int(10) unsigned NOT NULL, PRIMARY KEY (`aid`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; -- -- Dumping data for table `account` -- /*!40000 ALTER TABLE `account` DISABLE KEYS */; INSERT INTO `account` (`aid`,`aNum`,`pin`,`balance`,`limit`) VALUES (1,123,9999,110,100), (2,456,1111,5000,300); /*!40000 ALTER TABLE `account` ENABLE KEYS */; -- -- Definition of table `log` -- DROP TABLE IF EXISTS `log`; CREATE TABLE `log` ( `lid` int(10) unsigned NOT NULL AUTO_INCREMENT, `account` int(10) unsigned NOT NULL, `on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `amount` int(10) unsigned NOT NULL, PRIMARY KEY (`lid`), KEY `FK_log_1` (`account`), CONSTRAINT `FK_log_1` FOREIGN KEY (`account`) REFERENCES `account` (`aid`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- -- Dumping data for table `log` -- /*!40000 ALTER TABLE `log` DISABLE KEYS */; INSERT INTO `log` (`lid`,`account`,`on`,`amount`) VALUES (1,1,'2011-04-06 16:10:46',20), (2,1,'2011-04-06 16:16:38',50), (3,1,'2011-04-06 16:22:10',20); /*!40000 ALTER TABLE `log` ENABLE KEYS */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
Transaction application example/transEx.rar
transEx/build/web/checkLogin.jsp
<%-- read the accid and the pin from the request use the function in the bean to see if it is ok if ok save my account in the session go to the withraw page else go to login with an error message --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import = "pack.Account" %> <jsp:useBean id="oracle" scope="page" class="pack.Accessor" /> <%! pack.Accessor oracle123 = new pack.Accessor(); %> <% String acNum = request.getParameter("acnum"); String pin = request.getParameter("pin"); Account me = oracle.getAccount(Integer.parseInt(acNum), Integer.parseInt(pin) ); if(me != null) { session.setAttribute("me", me); response.sendRedirect("withdrawal.jsp"); } else { %> <jsp:include page="login.jsp"> <jsp:param name="msg" value="Error"/> </jsp:include> <% } %>
transEx/build/web/doWithdraw.jsp
<%-- check if balance is sufficient if it is do transaction else show error --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import = "pack.Account" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="oracle" scope="page" class="pack.Accessor" /> <% String amount = request.getParameter("amount"); Account me = (Account) session.getAttribute("me"); if(oracle.checkBalance(Integer.parseInt(amount), me)) { oracle.makeWithdrawal(Integer.parseInt(amount), me.getId()); %> <jsp:forward page="withdrawal.jsp"> <jsp:param name="msg" value="Done"/> </jsp:forward> <% } else { %> <jsp:forward page="withdrawal.jsp"> <jsp:param name="msg" value="Psori pou thelis tziai lefta"/> </jsp:forward> <% } %>
transEx/build/web/login.jsp
<%-- Document : index Created on : Apr 6, 2011, 3:29:28 PM Author : christoforos --%> <%@page contentType="text/html" 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>JSP Page</title> </head> <body> <h1>Put your credentials</h1> <form action="checkLogin.jsp" method="POST"> <table> <tr> <td>Account Number</td> <td><input type="text" name="acnum" value="" /></td> </tr> <tr> <td>Pin</td> <td><input type="password" name="pin" value="" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login" /></td> </tr> </table> <% String msg = request.getParameter("msg"); if(msg != null) out.println(msg); %> </form> </body> </html>
transEx/build/web/META-INF/context.xml
transEx/build/web/META-INF/MANIFEST.MF
Manifest-Version: 1.0
transEx/build/web/WEB-INF/classes/.netbeans_automatic_build
transEx/build/web/WEB-INF/classes/.netbeans_update_resources
transEx/build/web/WEB-INF/classes/pack/Accessor.class
package pack; public synchronized class Accessor { public void Accessor(); public Account getAccount(int, int); public boolean checkBalance(int, Account); public void makeWithdrawal(int, int); private javax.sql.DataSource getBankDB() throws javax.naming.NamingException; }
transEx/build/web/WEB-INF/classes/pack/Account.class
package pack; public synchronized class Account { private int id; private int acNum; private int pin; private int balance; private int limit; public void Account(); public int getId(); public void setId(int); public int getAcNum(); public void setAcNum(int); public int getPin(); public void setPin(int); public int getBalance(); public void setBalance(int); public int getLimit(); public void setLimit(int); }
transEx/build/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://localhost:3306/bank bankDB javax.sql.DataSource Container Shareable
transEx/build/web/withdrawal.jsp
<%-- Document : withdrawal Created on : Apr 6, 2011, 3:30:14 PM Author : christoforos --%> <%@page contentType="text/html" 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>JSP Page</title> </head> <body> <h1>How much to withdraw</h1> <form action="doWithdraw.jsp" method="POST"> <input type="text" name="amount" /> <input type="submit" value="Withdraw"/> </form> <% String msg = request.getParameter("msg"); if(msg != null) out.println(msg); %> </body> </html>
transEx/build.xml
Builds, tests, and runs the project transEx.
transEx/nbproject/ant-deploy.xml
transEx/nbproject/build-impl.xml
Must set src.dir Must set test.src.dir Must set build.dir Must set build.web.dir Must set build.generated.dir Must set dist.dir Must set build.classes.dir Must set dist.javadoc.dir Must set build.test.classes.dir Must set build.test.results.dir Must set build.classes.excludes Must set dist.war The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. Either open the project in the IDE and assign the server or setup the server classpath manually. For example like this: ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) The libs.CopyLibs.classpath property is not set up. This property must point to org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part of NetBeans IDE installation and is usually located at <netbeans_installation>/java<version>/ant/extra folder. Either open the project in the IDE and make sure CopyLibs library exists or setup the property manually. For example like this: ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar Must select some files in the IDE or set javac.includes Must select some files in the IDE or set javac.jsp.includes Must select a file in the IDE or set jsp.includes Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. Launching ${browse.url} Must select one file in the IDE or set run.class Must select one file in the IDE or set run.class Must select one file in the IDE or set debug.class Must select one file in the IDE or set debug.class Must set fix.includes Must select some files in the IDE or set javac.includes Some tests failed; see details above. Must select some files in the IDE or set test.includes Some tests failed; see details above. Must select one file in the IDE or set test.class
transEx/nbproject/genfiles.properties
build.xml.data.CRC32=17a87734 build.xml.script.CRC32=7cfeaa0a [email protected] # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=17a87734 nbproject/build-impl.xml.script.CRC32=84287aed nbproject/[email protected]
transEx/nbproject/private/private.properties
deploy.ant.properties.file=C:\\Users\\christoforos\\.netbeans\\6.8\\tomcat60.properties j2ee.platform.classpath=C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\annotations-api.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\catalina-ant.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\catalina-ha.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\catalina-tribes.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\catalina.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\el-api.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\jasper-el.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\jasper.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\jsp-api.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\mysql-connector-java-5.1.6-bin.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\servlet-api.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\tomcat-coyote.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\tomcat-dbcp.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\tomcat-i18n-es.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\tomcat-i18n-fr.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\lib\\tomcat-i18n-ja.jar:C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20\\bin\\tomcat-juli.jar j2ee.server.instance=tomcat60:home=C:\\Program Files\\Apache Software Foundation\\Apache Tomcat 6.0.20:base=apache-tomcat-6.0.20_base jaxbwiz.endorsed.dirs=C:\\Program Files\\NetBeans 6.8\\ide12\\modules\\ext\\jaxb\\api user.properties.file=C:\\Users\\christoforos\\.netbeans\\6.8\\build.properties
transEx/nbproject/private/private.xml
transEx/nbproject/project.properties
build.classes.dir=${build.web.dir}/WEB-INF/classes build.classes.excludes=**/*.java,**/*.form build.dir=build build.generated.dir=${build.dir}/generated build.generated.sources.dir=${build.dir}/generated-sources build.test.classes.dir=${build.dir}/test/classes build.test.results.dir=${build.dir}/test/results build.web.dir=${build.dir}/web build.web.excludes=${build.classes.excludes} client.urlPart= compile.jsps=false conf.dir=${source.root}/conf debug.classpath=${build.classes.dir}:${javac.classpath} debug.test.classpath=\ ${run.test.classpath} display.browser=true dist.dir=dist dist.ear.war=${dist.dir}/${war.ear.name} dist.javadoc.dir=${dist.dir}/javadoc dist.war=${dist.dir}/${war.name} excludes= includes=** j2ee.deploy.on.save=true j2ee.platform=1.5 j2ee.server.type=Tomcat60 jar.compress=false javac.classpath= # Space-separated list of extra javac options javac.compilerargs= javac.debug=true javac.deprecation=false javac.source=1.5 javac.target=1.5 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir}:\ ${libs.junit.classpath}:\ ${libs.junit_4.classpath} javadoc.additionalparam= javadoc.author=false javadoc.encoding=${source.encoding} javadoc.noindex=false javadoc.nonavbar=false javadoc.notree=false javadoc.preview=true javadoc.private=false javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api" jspcompilation.classpath=${jspc.classpath}:${javac.classpath} lib.dir=${web.docbase.dir}/WEB-INF/lib no.dependencies=false persistence.xml.dir=${conf.dir} platform.active=default_platform resource.dir=setup run.test.classpath=\ ${javac.test.classpath}:\ ${build.test.classes.dir} # Space-separated list of JVM arguments used when running a class with a main method or a unit test # (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): runmain.jvmargs= source.encoding=UTF-8 source.root=src src.dir=${source.root}/java test.src.dir=test war.content.additional= war.ear.name=transEx.war war.name=transEx.war web.docbase.dir=web webinf.dir=web/WEB-INF
transEx/nbproject/project.xml
org.netbeans.modules.web.project transEx 1.6.5
transEx/src/conf/MANIFEST.MF
Manifest-Version: 1.0
transEx/src/java/pack/Accessor.java
transEx/src/java/pack/Accessor.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
pack
;
import
java
.
sql
.
Connection
;
import
java
.
sql
.
PreparedStatement
;
import
java
.
sql
.
ResultSet
;
import
javax
.
naming
.
Context
;
import
javax
.
naming
.
InitialContext
;
import
javax
.
naming
.
NamingException
;
import
javax
.
sql
.
DataSource
;
/**
*
*
@author
christoforos
*/
public
class
Accessor
{
public
Account
getAccount
(
int
acNum
,
int
pin
)
{
try
{
Connection
cn
=
getBankDB
().
getConnection
();
String
sql
=
"SELECT * FROM account WHERE aNum = ? and pin = ?"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setInt
(
1
,
acNum
);
pst
.
setInt
(
2
,
pin
);
ResultSet
rs
=
pst
.
executeQuery
();
if
(
rs
.
next
())
{
Account
acc
=
new
Account
();
acc
.
setAcNum
(
acNum
);
acc
.
setPin
(
pin
);
acc
.
setBalance
(
rs
.
getInt
(
"balance"
));
acc
.
setId
(
rs
.
getInt
(
"aid"
));
acc
.
setLimit
(
rs
.
getInt
(
"limit"
));
return
acc
;
}
}
catch
(
Exception
e
)
{}
return
null
;
}
public
boolean
checkBalance
(
int
amount
,
Account
me
)
{
if
(
amount
>
me
.
getBalance
()
+
me
.
getLimit
())
return
false
;
return
true
;
}
public
void
makeWithdrawal
(
int
amount
,
int
acid
)
{
try
{
Connection
cn
=
getBankDB
().
getConnection
();
try
{
cn
.
setAutoCommit
(
false
);
String
sql
=
"UPDATE account SET balance = balance - ? WHERE aid = ?"
;
PreparedStatement
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setInt
(
1
,
amount
);
pst
.
setInt
(
2
,
acid
);
pst
.
executeUpdate
();
sql
=
"INSERT INTO log (account, amount) VALUES (?, ?)"
;
pst
=
cn
.
prepareStatement
(
sql
);
pst
.
setInt
(
1
,
acid
);
pst
.
setInt
(
2
,
amount
);
pst
.
executeUpdate
();
cn
.
commit
();
}
catch
(
Exception
ex
)
{
cn
.
rollback
();
}
}
catch
(
Exception
e
)
{
}
}
private
DataSource
getBankDB
()
throws
NamingException
{
Context
c
=
new
InitialContext
();
return
(
DataSource
)
c
.
lookup
(
"java:comp/env/bankDB"
);
}
}
transEx/src/java/pack/Account.java
transEx/src/java/pack/Account.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package
pack
;
/**
*
*
@author
christoforos
*/
public
class
Account
{
private
int
id
;
private
int
acNum
;
private
int
pin
;
private
int
balance
;
private
int
limit
;
/**
*
@return
the id
*/
public
int
getId
()
{
return
id
;
}
/**
*
@param
id the id to set
*/
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
/**
*
@return
the acNum
*/
public
int
getAcNum
()
{
return
acNum
;
}
/**
*
@param
acNum the acNum to set
*/
public
void
setAcNum
(
int
acNum
)
{
this
.
acNum
=
acNum
;
}
/**
*
@return
the pin
*/
public
int
getPin
()
{
return
pin
;
}
/**
*
@param
pin the pin to set
*/
public
void
setPin
(
int
pin
)
{
this
.
pin
=
pin
;
}
/**
*
@return
the balance
*/
public
int
getBalance
()
{
return
balance
;
}
/**
*
@param
balance the balance to set
*/
public
void
setBalance
(
int
balance
)
{
this
.
balance
=
balance
;
}
/**
*
@return
the limit
*/
public
int
getLimit
()
{
return
limit
;
}
/**
*
@param
limit the limit to set
*/
public
void
setLimit
(
int
limit
)
{
this
.
limit
=
limit
;
}
}
transEx/web/checkLogin.jsp
<%-- read the accid and the pin from the request use the function in the bean to see if it is ok if ok save my account in the session go to the withraw page else go to login with an error message --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import = "pack.Account" %> <jsp:useBean id="oracle" scope="page" class="pack.Accessor" /> <%! pack.Accessor oracle123 = new pack.Accessor(); %> <% String acNum = request.getParameter("acnum"); String pin = request.getParameter("pin"); Account me = oracle.getAccount(Integer.parseInt(acNum), Integer.parseInt(pin) ); if(me != null) { session.setAttribute("me", me); response.sendRedirect("withdrawal.jsp"); } else { %> <jsp:include page="login.jsp"> <jsp:param name="msg" value="Error"/> </jsp:include> <% } %>
transEx/web/doWithdraw.jsp
<%-- check if balance is sufficient if it is do transaction else show error --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import = "pack.Account" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="oracle" scope="page" class="pack.Accessor" /> <% String amount = request.getParameter("amount"); Account me = (Account) session.getAttribute("me"); if(oracle.checkBalance(Integer.parseInt(amount), me)) { oracle.makeWithdrawal(Integer.parseInt(amount), me.getId()); %> <jsp:forward page="withdrawal.jsp"> <jsp:param name="msg" value="Done"/> </jsp:forward> <% } else { %> <jsp:forward page="withdrawal.jsp"> <jsp:param name="msg" value="Psori pou thelis tziai lefta"/> </jsp:forward> <% } %>
transEx/web/login.jsp
<%-- Document : index Created on : Apr 6, 2011, 3:29:28 PM Author : christoforos --%> <%@page contentType="text/html" 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>JSP Page</title> </head> <body> <h1>Put your credentials</h1> <form action="checkLogin.jsp" method="POST"> <table> <tr> <td>Account Number</td> <td><input type="text" name="acnum" value="" /></td> </tr> <tr> <td>Pin</td> <td><input type="password" name="pin" value="" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login" /></td> </tr> </table> <% String msg = request.getParameter("msg"); if(msg != null) out.println(msg); %> </form> </body> </html>
transEx/web/META-INF/context.xml
transEx/web/WEB-INF/web.xml
30 index.jsp jdbc:mysql://localhost:3306/bank bankDB javax.sql.DataSource Container Shareable
transEx/web/withdrawal.jsp
<%-- Document : withdrawal Created on : Apr 6, 2011, 3:30:14 PM Author : christoforos --%> <%@page contentType="text/html" 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>JSP Page</title> </head> <body> <h1>How much to withdraw</h1> <form action="doWithdraw.jsp" method="POST"> <input type="text" name="amount" /> <input type="submit" value="Withdraw"/> </form> <% String msg = request.getParameter("msg"); if(msg != null) out.println(msg); %> </body> </html>