WAR Contacts

External files:

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>

Java/JBoss5/WAR (last edited 2020-06-24 17:39:51 by localhost)