WAR Contacts
External files:
- src/main/webapp/js/bootstrap.min.js
- src/main/webapp/js/jquery-3.5.1.min.js
- src/main/webapp/css/bootstrap.min.css
deploy_to_target.sh
rm ../warcontacts.tgz tar cvzf ../warcontacts.tgz ../warcontacts cp ../warcontacts.tgz ../target/ docker exec -it jboss5_container /bin/sh -c 'cd /app;rm -rf warcontacts; tar xvzf warcontacts.tgz' docker exec -it jboss5_container /bin/sh -c 'cd /app/warcontacts; rm /app/jboss-5.1.0.GA/server/default/deploy/warcontacts-0.0.1.war; mvn clean install;' docker exec -it jboss5_container /bin/sh -c 'cp /app/warcontacts/target/warcontacts-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy'
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.allowed.bitarus</groupId>
<artifactId>warcontacts</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.allowed.bitarus</groupId>
<artifactId>ejbcontacts</artifactId>
<version>0.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
src/main/java/org/allowed/bitarus/Handler.java
package org.allowed.bitarus;
import java.util.logging.Logger;
import java.util.logging.Level;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.naming.InitialContext;
import java.io.IOException;
import java.util.List;
import javax.naming.NamingEnumeration;
import javax.naming.NameClassPair;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class Handler {
private static final String CONTACTS_WS_LOCAL = "ContactsWS/local";
private ServletRequest request;
private ServletResponse response;
private JspWriter out;
public Handler(ServletRequest request, ServletResponse response, JspWriter out) {
this.request = request;
this.response = response;
this.out = out;
}
public Handler(PageContext pageContext) {
this.request = pageContext.getRequest();
this.response = pageContext.getResponse();
this.out = (JspWriter) pageContext.getAttribute(PageContext.OUT);
HttpServletRequest hsr = (HttpServletRequest) this.request;
System.out.println(String.format("Current method %s", hsr.getMethod()));
System.out.println(String.format("Path %s", hsr.getServletPath()));
if ("POST".equals(hsr.getMethod())) {
Map<String, String> params = hsr.getParameterMap();
for (String key : params.keySet()) {
System.out.println(String.format("%s:%s", key, hsr.getParameter(key)));
}
handleAddPost(hsr);
handleDeletePost(hsr);
handleUpdatePost(hsr);
}
}
private void handleUpdatePost(HttpServletRequest hsr) {
if ("/update.jsp".equals(hsr.getServletPath())) {
try {
InitialContext context = new InitialContext();
ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
long id = Integer.parseInt(hsr.getParameter("cid"));
String firstName = hsr.getParameter("firstname");
String lastName = hsr.getParameter("lastname");
String address = hsr.getParameter("address");
String phoneNumber = hsr.getParameter("phonenumber");
contacts.edit(id, firstName, lastName, address, phoneNumber);
redirectToIndex(hsr);
} catch (Exception ex) {
}
}
}
private void handleDeletePost(HttpServletRequest hsr) {
if ("/delete.jsp".equals(hsr.getServletPath())) {
try {
InitialContext context = new InitialContext();
ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
contacts.remove(Integer.parseInt(hsr.getParameter("id")));
redirectToIndex(hsr);
} catch (Exception ex) {
}
}
}
private void handleAddPost(HttpServletRequest hsr) {
if ("/add.jsp".equals(hsr.getServletPath())) {
try {
InitialContext context = new InitialContext();
ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
contacts.add(hsr.getParameter("firstname"), hsr.getParameter("lastname"), hsr.getParameter("address"),
hsr.getParameter("phonenumber"));
redirectToIndex(hsr);
} catch (Exception ex) {
}
}
}
private void redirectToIndex(HttpServletRequest hsr) throws IOException {
((HttpServletResponse) this.response).sendRedirect(hsr.getContextPath() + "/index.jsp");
}
public void writeHandler() {
try {
this.out.println(String.format("<p>Handler up %s</p>", this.request.getParameter("user")));
} catch (Exception ex) {
}
}
public void writeIP() {
try {
this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
} catch (Exception ex) {
}
}
public List<ContactEntity> getAllContacts() {
List<ContactEntity> ret = null;
try {
InitialContext context = new InitialContext();
ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
ret = contacts.getAll();
} catch (Exception ex) {
}
return ret;
}
public ContactEntity getContact(long id) {
ContactEntity ret = null;
try {
InitialContext context = new InitialContext();
ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
ret = contacts.get(id);
} catch (Exception ex) {
}
return ret;
}
}
src/main/webapp/add.jsp
<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
<head>
<jsp:include page="head.jsp" />
</head>
<body>
<jsp:include page="nav.jsp" />
<div class="container topspace">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8">
<form action="add.jsp" method="post" >
<label for="firstname">First name:</label><br/>
<input type="text" id="firstname" name="firstname" class="form-control"><br/>
<label for="lastname">Last name:</label><br/>
<input type="text" id="lastname" name="lastname" class="form-control"><br/>
<label for="address">Address::</label><br/>
<input type="text" id="Address:" name="address" class="form-control"><br/>
<label for="phonenumber">Phone number:</label><br/>
<input type="text" id="phonenumber" name="phonenumber" class="form-control"><br/>
<input type="submit" value="Add" class="form-control btn btn-primary button"/>
</form>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</body>
</html>
src/main/webapp/css/warcontacts.css
.button{margin-top:2px; margin-bottom:2px;}
.topspace { padding-top: 10px; }
src/main/webapp/delete.jsp
<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
<head>
<jsp:include page="head.jsp" />
</head>
<body>
<% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) ); %>
<jsp:include page="nav.jsp" />
<div class="container topspace">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8">
<% if(ci!=null) { %>
<p><strong>Id:</strong> <%= ci.getId() %></p>
<p><strong>First name:</strong> <%= ci.getFirstName() %></p>
<p><strong>Last name:</strong> <%= ci.getLastName() %></p>
<p><strong>Creation date:</strong> <%= ci.getCreationDate() %></p>
<p><strong>Address:</strong> <%= ci.getAddress() %></p>
<p><strong>Phone:</strong> <%= ci.getPhoneNumber() %></p>
<form action="delete.jsp" method="post">
<input type="hidden" id="id" name="id" value="<%=ci.getId()%>" />
<input type="submit" class="form-control btn btn-primary button" value="Delete">
</form>
<% } %>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</body>
</html>
src/main/webapp/head.jsp
<link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/warcontacts.css"/> <script src="js/jquery-3.5.1.min.js"></script> <script src="js/bootstrap.min.js" ></script>
src/main/webapp/index.jsp
<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
<head>
<jsp:include page="head.jsp" />
</head>
<body>
<jsp:include page="nav.jsp" />
<div class="container topspace">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8">
<% List<ContactEntity> contacts = h.getAllContacts(); %>
<a href="add.jsp" class="btn btn-primary button">Add</a>
<table class="table table-stripped" >
<tr>
<th>FirstName</th>
<th>LastName</th>
<th>Actions</th>
</tr>
<% for(int i=0; i<contacts.size() ;i++){ %>
<tr>
<% ContactEntity contact = ((ContactEntity)contacts.get(i)); %>
<td><%= contact.getFirstName() %></td>
<td><%= contact.getLastName() %></td>
<td>
<a href="view.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">View</a>
<a href="update.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">Update</a>
<a href="delete.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">Delete</a>
</td>
</tr>
<%}%>
</table>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</body>
</html>
src/main/webapp/nav.jsp
<nav class="navbar navbar-dark bg-dark navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.jsp">Contacts</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="index.jsp">List</a></li>
</ul>
</div>
</div>
</nav>
src/main/webapp/update.jsp
<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
<head>
<jsp:include page="head.jsp" />
</head>
<body>
<jsp:include page="nav.jsp" />
<div class="container topspace">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8">
<% if( request.getParameter("id") != null ) { %>
<% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) ); %>
<form action="update.jsp" method="post" >
<label for="firstname">First name:</label><br/>
<input class="form-control" type="text" id="firstname" name="firstname" value="<%= ci.getFirstName() %>"/><br/>
<label for="lastname">Last name:</label><br/>
<input class="form-control" type="text" id="lastname" name="lastname" value="<%= ci.getLastName() %>" /><br/>
<label for="address">Address::</label><br/>
<input class="form-control" type="text" id="Address:" name="address" value="<%= ci.getAddress() %>"/><br/>
<label for="phonenumber">Phone number:</label><br/>
<input class="form-control" type="text" id="phonenumber" name="phonenumber" value="<%= ci.getPhoneNumber() %>"/><br/>
<input class="form-control" type="hidden" id="cid" name="cid" value="<%=ci.getId()%>"/>
<input type="submit" value="Update" class="form-control btn btn-primary button" >
</form>
<% } %>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</body>
</html>
src/main/webapp/view.jsp
<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
<head>
<jsp:include page="head.jsp" />
</head>
<body>
<jsp:include page="nav.jsp" />
<div class="container topspace">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8">
<% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) ); %>
<p><strong>Id:</strong> <%= ci.getId() %></p>
<p><strong>First name:</strong> <%= ci.getFirstName() %></p>
<p><strong>Last name:</strong> <%= ci.getLastName() %></p>
<p><strong>Creation date:</strong> <%= ci.getCreationDate() %></p>
<p><strong>Address:</strong> <%= ci.getAddress() %></p>
<p><strong>Phone:</strong> <%= ci.getPhoneNumber() %></p>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</body>
</html>
src/main/webapp/WEB-INF/web.xml
<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>