Size: 54752
Comment:
|
Size: 54769
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1636: | Line 1636: |
== EAR == |
JBoss5
- JEE5 certified
- Java EE 5 (May 11, 2006) (Java Servlet 2.5, JSP 2.1, JSTL 1.2, JSF 1.2, EJB 3.0, JDBC 3.0)
https://docs.oracle.com/javaee/5/tutorial/doc/javaeetutorial5.pdf
- Web container
- EJB container
- Requires jdk-1_5_0_22-linux-amd64.bin from Oracle to run
- run.sh -c options :minimal default all standard web
Locally on debian buster
cp jdk-1_5_0_22-linux-amd64.bin ~ cd ~ ./jdk-1_5_0_22-linux-amd64.bin unzip jboss-5.1.0.GA.zip JAVA_HOME=jdk1.5.0_22/ jboss-5.1.0.GA/bin/run.sh -b 0.0.0.0 http://127.0.0.1:8080/ wget https://archive.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip unzip apache-maven-3.1.1-bin.zip JAVA_HOME=jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn -version JAVA_HOME=~/jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn clean install
Docker
Dockerfile
FROM ubuntu:16.04 RUN apt-get update && apt-get install -y openssh-server unzip openjdk-8-jdk net-tools maven vim RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile RUN useradd userx RUN echo 'userx:userx' | chpasswd EXPOSE 22 8080 8081 8009 8009 CMD ["/usr/sbin/sshd", "-D"]
1 wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip
2 unzip jboss-5.1.0.GA.zip
3
4 nano Dockerfile
5
6 docker build -t docker_jboss5 .
7 mkdir target
8 docker run -d -p 8080:8080 --name jboss5_container --mount type=bind,source="$(pwd)"/target,target=/app docker_jboss5
9 #docker run -d -P --name jboss5_container --mount type=bind,source="$(pwd)"/target,target=/app docker_jboss5
10 mv ~/jboss-5.1.0.GA.zip target/
11 docker exec -it jboss5_container bash
12 cd /app
13 unzip jboss-5.1.0.GA.zip
14
15 ./jdk-1_5_0_22-linux-amd64.bin
16 /app# jdk1.5.0_22/bin/java -version
17 #java version "1.5.0_22"
18 #Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
19 #Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
20
21 #/app/jdk1.5.0_22/bin/java -jar run.jar
22
23 mvn -version
24 #Apache Maven 3.3.9
25 #Maven home: /usr/share/maven
26 #Java version: 1.8.0_252, vendor: Private Build
27 #Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
28 #Default locale: en_US, platform encoding: ANSI_X3.4-1968
29 #OS name: "linux", version: "4.19.0-6-amd64", arch: "amd64", family: "unix"
30
31 cd /app/jboss-5.1.0.GA/bin
32 JAVA_HOME=/app/jdk1.5.0_22 ./run.sh -c all -b 0.0.0.0
Example EJB for jboss5 in docker container
- docker exec -it jboss5_container bash
- cd /app/ejbjee5
- mvn clean compile package
- cp /app/ejbjee5/target/ejbjee5-0.0.1.jar /app/jboss-5.1.0.GA/server/default/deploy/
18:04:14,955 INFO [JBossASKernel] Created KernelDeployment for: ejbjee5-0.0.1.jar 18:04:14,955 INFO [JBossASKernel] installing bean: jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3 18:04:14,955 INFO [JBossASKernel] with dependencies: 18:04:14,955 INFO [JBossASKernel] and demands: 18:04:14,955 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService 18:04:14,955 INFO [JBossASKernel] and supplies: 18:04:14,956 INFO [JBossASKernel] Class:org.allowed.bitarus.ScheduleRemote 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/local-org.allowed.bitarus.ScheduleLocal 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/remote 18:04:14,956 INFO [JBossASKernel] Class:org.allowed.bitarus.ScheduleLocal 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/local 18:04:14,956 INFO [JBossASKernel] jndi:ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote 18:04:14,956 INFO [JBossASKernel] Added bean(jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3) to KernelDeployment of: ejbjee5-0.0.1.jar 18:04:14,957 INFO [EJB3EndpointDeployer] Deploy AbstractBeanMetaData@542c21cb{name=jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3_endpoint bean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl properties=[container] constructor=null autowireCandidate=true} 18:04:15,020 INFO [SessionSpecContainer] Starting jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3 18:04:15,020 INFO [EJBContainer] STARTED EJB: org.allowed.bitarus.ScheduleWS ejbName: ScheduleWS 18:04:15,041 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI: ScheduleWS/remote - EJB3.x Default Remote Business Interface ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote - EJB3.x Remote Business Interface ScheduleWS/local - EJB3.x Default Local Business Interface ScheduleWS/local-org.allowed.bitarus.ScheduleLocal - EJB3.x Local Business Interface 18:04:15,097 INFO [DefaultEndpointRegistry] register: jboss.ws:context=ejbjee5-0.0.1,endpoint=ScheduleWS 18:04:15,225 INFO [WSDLFilePublisher] WSDL published to: file:/app/jboss-5.1.0.GA/server/default/data/wsdl/ejbjee5-0.0.1.jar/ScheduleWSService4435570151338675382.wsdl 18:04:15,248 INFO [TomcatDeployment] deploy, ctxPath=/ejbjee5-0.0.1
./src/main/java/org/allowed/bitarus/ScheduleRemote.java
./src/main/java/org/allowed/bitarus/ScheduleLocal.java
./src/main/java/org/allowed/bitarus/ScheduleWS.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Stateless;
4 import javax.jws.WebMethod;
5 import javax.jws.WebService;
6 import org.allowed.bitarus.ScheduleRemote;
7
8 @Stateless
9 @WebService
10 public class ScheduleWS implements ScheduleRemote {
11
12 @WebMethod
13 public int addSchedule(int val1, int val2) {
14 return val1 + val2;
15 }
16 }
./src/main/resources/META-INF/ejb-jar.xml
1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
4 version="3.0">
5 <enterprise-beans>
6 <session>
7 <ejb-name>ScheduleWS</ejb-name>
8 <business-local>org.allowed.bitarus.ScheduleLocal</business-local>
9 <business-remote>org.allowed.bitarus.ScheduleRemote</business-remote>
10 <ejb-class>org.allowed.bitarus.ScheduleWS</ejb-class>
11 <session-type>Stateless</session-type>
12 <transaction-type>Container</transaction-type>
13 </session>
14 </enterprise-beans>
15 </ejb-jar>
./pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>ejbjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>ejb</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src/main/java</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>
- ./SoapUI-5.5.0
- new soap project
initial wsdl: http://127.0.0.1:8080/ejbjee5-0.0.1/ScheduleWS?wsdl
Example WAR for JBoss5 in docker container
- mvn clean install
- cp /app/warjee5/target/warjee5-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy
src/main/java/org/allowed/bitarus/TestBean.java
1 package org.allowed.bitarus;
2 import java.util.logging.Logger;
3 import java.util.logging.Level;
4
5 public class TestBean{
6 private String name;
7 private Logger logger;
8
9 public TestBean(){
10 this.logger = Logger.getLogger(this.getClass().getName() );
11 this.logger.log(Level.INFO,"Created test bean");
12 this.name="Ioooo";
13 }
14
15 public String getName(){
16 this.logger.info("getName called");
17 return this.name;
18 }
19
20 public void setName(String name){
21 this.name=name;
22 }
23 }
src/main/java/org/allowed/bitarus/Handler.java
1 package org.allowed.bitarus;
2
3 import java.util.logging.Logger;
4 import java.util.logging.Level;
5 import javax.servlet.ServletRequest;
6 import javax.servlet.ServletResponse;
7 import javax.servlet.jsp.JspWriter;
8 import javax.servlet.jsp.PageContext;
9
10 public class Handler{
11 private ServletRequest request;
12 private ServletResponse response;
13 private JspWriter out;
14
15 public Handler(ServletRequest request, ServletResponse response,JspWriter out){
16 this.request = request;
17 this.response = response;
18 this.out = out;
19 }
20
21 public Handler(PageContext pageContext){
22 this.request = pageContext.getRequest();
23 this.response = pageContext.getResponse();
24 this.out = (JspWriter) pageContext.getAttribute(pageContext.OUT) ;
25 }
26
27 public void writeHandler(){
28 try{
29 this.out.println(String.format("<p>Handler up %s</p>" , this.request.getParameter("user") ));
30 }
31 catch(Exception ex){
32 }
33 }
34
35 public void writeIP(){
36 try{
37 this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
38 }
39 catch(Exception ex){
40 }
41 }
42
43 }
src/main/webapp/otherindex.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Other Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 </body>
13 </html>
src/main/webapp/index.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 </body>
13 </html>
src/main/webapp/WEB-INF/web.xml
1 <?xml version="1.0"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
6 <servlet>
7 <servlet-name>index</servlet-name>
8 <jsp-file>/index.jsp</jsp-file>
9 </servlet>
10 <servlet-mapping>
11 <servlet-name>index</servlet-name>
12 <url-pattern>/index**</url-pattern>
13 </servlet-mapping>
14
15 <servlet>
16 <servlet-name>otherindex</servlet-name>
17 <jsp-file>/otherindex.jsp</jsp-file>
18 </servlet>
19 <servlet-mapping>
20 <servlet-name>otherindex</servlet-name>
21 <url-pattern>/otherindex**</url-pattern>
22 </servlet-mapping>
23
24 </web-app>
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>warjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>war</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>
HyperSQL Database (HSQLDB)
HyperSQL is used for development, testing and deployment of database applications.
user: sa pwd: empty port: 1701 db path: /app/jboss-5.1.0.GA/server/default/data/hypersonic/localDB java -cp ./common/lib/hsqldb.jar org.hsqldb.util.SqlTool localDB #rcfile # vi /root/sqltool.rc urlid localDB url jdbc:hsqldb:/app/jboss-5.1.0.GA/server/default/data/hypersonic/localDB;shutdown=true username sa password /app/jboss-5.1.0.GA/server/default/data/hypersonic java -cp /app/jboss-5.1.0.GA/common/lib/hsqldb.jar org.hsqldb.util.SqlTool localDB \? \q # show tables \dt TABLE_SCHEM TABLE_NAME ----------- -------------- PUBLIC ADDENTITY sql> select * from addentity; ID CREATIONDATE OP1 OP2 RES -- ----------------------- --- --- --- 1 2020-06-20 15:05:29.037 1 7 8 2 2020-06-20 15:05:30.509 1 7 8 3 2020-06-20 15:05:31.137 1 7 8 4 2020-06-20 15:05:43.043 1 70 71 5 2020-06-20 15:09:01.0 299 1 300 6 2020-06-20 15:25:14.918 1 2 3 7 2020-06-20 15:25:42.434 10 20 30
EJB Jar with persistence
src/main/java/org/allowed/bitarus/AddEntity.java
1 package org.allowed.bitarus;
2
3 import java.util.Date;
4 import javax.persistence.Id;
5 import javax.persistence.Entity;
6 import javax.persistence.Column;
7 import javax.persistence.GeneratedValue;
8 import javax.persistence.GenerationType;
9 import javax.persistence.TemporalType;
10 import javax.persistence.Temporal;
11
12 @Entity
13 public class AddEntity{
14 @Id
15 @GeneratedValue(strategy = GenerationType.IDENTITY)
16 private long id;
17 @Column
18 @Temporal(TemporalType.TIMESTAMP)
19 private Date creationDate;
20 @Column
21 private int op1;
22 @Column
23 private int op2;
24 @Column
25 private int res;
26
27 public long getId(){return this.id;}
28 public void setId(long id){ this.id=id;}
29
30 public Date getCreationDate(){return this.creationDate;}
31 public void setCreationDate(Date creationDate){ this.creationDate=creationDate;}
32
33 public int getOp1(){return this.op1;}
34 public void setOp1(int op1){ this.op1=op1;}
35
36
37 public int getOp2(){return this.op2;}
38 public void setOp2(int op2){ this.op2=op2;}
39
40 public int getRes(){return this.res;}
41 public void setRes(int res){ this.res=res;}
42 }
src/main/java/org/allowed/bitarus/AddLocal.java
src/main/java/org/allowed/bitarus/AddWS.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Stateless;
4 import javax.jws.WebMethod;
5 import javax.jws.WebService;
6 import org.allowed.bitarus.AddRemote;
7 import javax.persistence.PersistenceContext;
8 import javax.persistence.EntityManager;
9 import java.util.List;
10
11 @Stateless
12 @WebService
13 public class AddWS implements AddRemote {
14 @PersistenceContext(unitName="puDefaultDS")
15 EntityManager em;
16
17 @WebMethod
18 public int add(int val1, int val2) {
19 int res = val1 + val2;
20 AddEntity me = new AddEntity();
21 me.setRes(res);
22 me.setOp1(val1);
23 me.setOp2(val2);
24 me.setCreationDate( new java.util.Date() );
25 em.persist(me);
26 return res;
27 }
28
29 @WebMethod
30 public List<AddEntity> getAll(){
31 return em.createQuery("select a from AddEntity a ").getResultList();
32 }
33
34 }
src/main/java/org/allowed/bitarus/AddRemote.java
src/main/resources/META-INF/ejb-jar.xml
1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
4 version="3.0">
5 <enterprise-beans>
6 <session>
7 <ejb-name>AddWS</ejb-name>
8 <business-local>org.allowed.bitarus.AddLocal</business-local>
9 <business-remote>org.allowed.bitarus.AddRemote</business-remote>
10 <ejb-class>org.allowed.bitarus.AddWS</ejb-class>
11 <session-type>Stateless</session-type>
12 <transaction-type>Container</transaction-type>
13 </session>
14 </enterprise-beans>
15 </ejb-jar>
src/main/resources/META-INF/persistence.xml
1 <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
2 <persistence-unit name="puDefaultDS" transaction-type="JTA">
3 <jta-data-source>java:/DefaultDS</jta-data-source>
4 <properties>
5 <property name="hibernate.show_sql" value="true" />
6 <property name="hibernate.format_sql" value="true" />
7 <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
8 <property name="hibernate.hbm2ddl.auto" value="update"/>
9 </properties>
10 </persistence-unit>
11 </persistence>
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>ejbjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>ejb</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>
JNDIView
Show JNDI info. In kmx comsole chosse jboss, service=JNDIView, invoke list, Global JNDI Namespace
WAR web app that invokes ejb using JNDI name
- mvn clean install
- cp target/warjee5-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy/warjee5-0.0.1.war
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>warjee5</artifactId>
7 <version>0.0.1</version>
8 <packaging>war</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 <dependency>
17 <groupId>org.allowed.bitarus</groupId>
18 <artifactId>ejbjee5</artifactId>
19 <version>0.0.1</version>
20 <scope>provided</scope>
21 </dependency>
22 </dependencies>
23 <build>
24 <sourceDirectory>src</sourceDirectory>
25 <plugins>
26 <plugin>
27 <artifactId>maven-compiler-plugin</artifactId>
28 <configuration>
29 <source>1.5</source>
30 <target>1.5</target>
31 </configuration>
32 </plugin>
33 </plugins>
34 </build>
35 </project>
src/main/java/org/allowed/bitarus/Handler.java
1 package org.allowed.bitarus;
2
3 import java.util.logging.Logger;
4 import java.util.logging.Level;
5 import javax.servlet.ServletRequest;
6 import javax.servlet.ServletResponse;
7 import javax.servlet.jsp.JspWriter;
8 import javax.servlet.jsp.PageContext;
9 import javax.naming.InitialContext;
10 import java.util.List;
11 import javax.naming.NamingEnumeration;
12 import javax.naming.NameClassPair;
13
14 public class Handler{
15 private ServletRequest request;
16 private ServletResponse response;
17 private JspWriter out;
18
19 public Handler(ServletRequest request, ServletResponse response,JspWriter out){
20 this.request = request;
21 this.response = response;
22 this.out = out;
23 }
24
25 public Handler(PageContext pageContext){
26 this.request = pageContext.getRequest();
27 this.response = pageContext.getResponse();
28 this.out = (JspWriter) pageContext.getAttribute(pageContext.OUT) ;
29 }
30
31 public void writeHandler(){
32 try{
33 this.out.println(String.format("<p>Handler up %s</p>" , this.request.getParameter("user") ));
34 }
35 catch(Exception ex){
36 }
37 }
38
39 public void writeIP(){
40 try{
41 this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
42 }
43 catch(Exception ex){
44 }
45 }
46
47 public void writeAddResults(){
48 try{
49 InitialContext context = new InitialContext();
50 NamingEnumeration<NameClassPair> namingList = context.list("");
51 while (namingList.hasMore()) {
52 out.println(namingList.next().getName() + "<br/>" );
53 }
54
55 AddLocal addLocal = (AddLocal) context.lookup("AddWS/local");
56 List<AddEntity> list = addLocal.getAll();
57 for(int idx=0; idx<list.size(); idx++){
58 this.out.println( list.get(idx).getCreationDate().toString() + "<br/>" );
59 }
60 }
61 catch(Exception ex){
62 }
63 }
64 }
src/main/java/org/allowed/bitarus/TestBean.java
1 package org.allowed.bitarus;
2 import java.util.logging.Logger;
3 import java.util.logging.Level;
4
5 public class TestBean{
6 private String name;
7 private Logger logger;
8
9 public TestBean(){
10 this.logger = Logger.getLogger(this.getClass().getName() );
11 this.logger.log(Level.INFO,"Created test bean");
12 this.name="Ioooo";
13 }
14
15 public String getName(){
16 this.logger.info("getName called");
17 return this.name;
18 }
19
20 public void setName(String name){
21 this.name=name;
22 }
23 }
src/main/webapp/WEB-INF/web.xml
1 <?xml version="1.0"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
6 <servlet>
7 <servlet-name>index</servlet-name>
8 <jsp-file>/index.jsp</jsp-file>
9 </servlet>
10 <servlet-mapping>
11 <servlet-name>index</servlet-name>
12 <url-pattern>/index**</url-pattern>
13 </servlet-mapping>
14 <servlet>
15 <servlet-name>otherindex</servlet-name>
16 <jsp-file>/otherindex.jsp</jsp-file>
17 </servlet>
18 <servlet-mapping>
19 <servlet-name>otherindex</servlet-name>
20 <url-pattern>/otherindex**</url-pattern>
21 </servlet-mapping>
22 </web-app>
src/main/webapp/index.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 <h3><% h.writeAddResults(); %></h3>
13 </body>
14 </html>
src/main/webapp/otherindex.jsp
1 <%@page import="org.allowed.bitarus.Handler" %>
2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
3 <% //Handler h = new Handler(request,response,out); %>
4 <% Handler h = new Handler(pageContext); %>
5 <html>
6 <body>
7 <p>Other Hello</p>
8 <p>World <jsp:getProperty name="test" property="name" /> </p>
9 <% h.writeHandler(); %>
10 <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
11 <h3><% h.writeIP(); %></h3>
12 </body>
13 </html>
Spring 3.0.1 in JBoss 5
pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6 <modelVersion>4.0.0</modelVersion>
7 <groupId>org.allowed.bitarus</groupId>
8 <artifactId>testSpringMVCJSP</artifactId>
9 <version>0.1.0</version>
10 <packaging>war</packaging>
11 <dependencies>
12 <dependency>
13 <groupId>org.springframework</groupId>
14 <artifactId>spring-core</artifactId>
15 <version>3.0.1.RELEASE</version>
16 </dependency>
17 <dependency>
18 <groupId>org.springframework</groupId>
19 <artifactId>spring-web</artifactId>
20 <version>3.0.1.RELEASE</version>
21 </dependency>
22 <dependency>
23 <groupId>org.springframework</groupId>
24 <artifactId>spring-webmvc</artifactId>
25 <version>3.0.1.RELEASE</version>
26 </dependency>
27 </dependencies>
28 <build>
29 <sourceDirectory>src/main/java</sourceDirectory>
30 <plugins>
31 <plugin>
32 <artifactId>maven-compiler-plugin</artifactId>
33 <configuration>
34 <source>1.5</source>
35 <target>1.5</target>
36 </configuration>
37 </plugin>
38 </plugins>
39 </build>
40 </project>
src/main/java/org/allowed/bitarus/hello/HelloController.java
1 package org.allowed.bitarus.hello;
2
3 import org.springframework.stereotype.Controller;
4 import org.springframework.ui.Model;
5 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RequestParam;
7
8 @Controller
9 public class HelloController {
10 @RequestMapping("/hello")
11 public String hellox(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
12 model.addAttribute("name", name);
13 return "greeting";
14 }
15 }
src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml
1 <beans xmlns="http://www.springframework.org/schema/beans"
2 xmlns:context="http://www.springframework.org/schema/context"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="
5 http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
7 http://www.springframework.org/schema/context
8 http://www.springframework.org/schema/context/spring-context-3.0.xsd">
9 <context:component-scan base-package="org.allowed.bitarus.hello" />
10 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
11 <property name="prefix">
12 <value>/WEB-INF/pages/</value>
13 </property>
14 <property name="suffix">
15 <value>.jsp</value>
16 </property>
17 </bean>
18 </beans>
src/main/webapp/WEB-INF/pages/greeting.jsp
src/main/webapp/WEB-INF/web.xml
1 <web-app id="WebApp_ID" version="2.4"
2 xmlns="http://java.sun.com/xml/ns/j2ee"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6
7 <display-name>Spring MVC Application + JSP</display-name>
8 <servlet>
9 <servlet-name>mvc-dispatcher</servlet-name>
10 <servlet-class>
11 org.springframework.web.servlet.DispatcherServlet
12 </servlet-class>
13 <load-on-startup>1</load-on-startup>
14 </servlet>
15 <servlet-mapping>
16 <servlet-name>mvc-dispatcher</servlet-name>
17 <url-pattern>/</url-pattern>
18 </servlet-mapping>
19 <context-param>
20 <param-name>contextConfigLocation</param-name>
21 <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
22 </context-param>
23 <listener>
24 <listener-class>
25 org.springframework.web.context.ContextLoaderListener
26 </listener-class>
27 </listener>
28 </web-app>
EJB 3.0 Contacts, JPA
src/main/java/org/allowed/bitarus/ContactsLocal.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Local;
4 import java.util.List;
5
6 @Local
7 public interface ContactsLocal {
8 void add(String firstName, String lastName, String address, String phoneNumber);
9 List<ContactEntity> getAll();
10 ContactEntity get(long id);
11 void remove(long id);
12 void edit(long id, String firstName, String lastName, String address, String phoneNumber );
13 }
src/main/java/org/allowed/bitarus/ContactsWS.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Stateless;
4 import javax.jws.WebMethod;
5 import javax.jws.WebService;
6 import org.allowed.bitarus.ContactsRemote;
7 import javax.persistence.PersistenceContext;
8 import javax.persistence.EntityManager;
9 import java.util.List;
10 import javax.persistence.NamedQuery;
11
12 @Stateless
13 @WebService
14 public class ContactsWS implements ContactsRemote, ContactsLocal {
15 @PersistenceContext(unitName="puContactsDefaultDS")
16 EntityManager em;
17
18 @WebMethod
19 public void add(String firstName, String lastName, String address, String phoneNumber ) {
20 ContactEntity c = new ContactEntity();
21 c.setFirstName(firstName);
22 c.setLastName(lastName);
23 c.setAddress(address);
24 c.setPhoneNumber(phoneNumber);
25 c.setCreationDate( new java.util.Date() );
26 em.persist(c);
27 }
28
29 @WebMethod
30 public List<ContactEntity> getAll(){
31 return em.createQuery("select a from ContactEntity a ").getResultList();
32 }
33
34 @WebMethod
35 public ContactEntity get(long id){
36 //return (ContactEntity) em.createQuery("select a from ContactEntity a where a.id = :id").setParameter("id", id).getSingleResult();
37 return (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
38 }
39
40 @WebMethod
41 public void remove(long id){
42 ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
43 em.remove(ent);
44 }
45
46 @WebMethod
47 public void edit(long id, String firstName, String lastName, String address, String phoneNumber ){
48 ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
49 ent.setFirstName(firstName);
50 ent.setLastName(lastName);
51 ent.setAddress(address);
52 ent.setPhoneNumber(phoneNumber);
53 em.persist(ent);
54 }
55
56 }
src/main/java/org/allowed/bitarus/ContactsRemote.java
1 package org.allowed.bitarus;
2
3 import javax.ejb.Remote;
4 import java.util.List;
5
6 @Remote
7 public interface ContactsRemote {
8 void add(String firstName, String lastName, String address, String phoneNumber);
9 List<ContactEntity> getAll();
10 ContactEntity get(long id);
11 void remove(long id);
12 void edit(long id, String firstName, String lastName, String address, String phoneNumber );
13
14 }
src/main/java/org/allowed/bitarus/ContactEntity.java
1 package org.allowed.bitarus;
2
3 import java.util.Date;
4 import javax.persistence.Id;
5 import javax.persistence.Entity;
6 import javax.persistence.Column;
7 import javax.persistence.GeneratedValue;
8 import javax.persistence.GenerationType;
9 import javax.persistence.TemporalType;
10 import javax.persistence.Temporal;
11 import javax.persistence.NamedQueries;
12 import javax.persistence.NamedQuery;
13
14 @Entity
15 @NamedQueries( { @NamedQuery(name="Contacts.byId",query="select a from ContactEntity a where a.id = :id") } )
16 public class ContactEntity{
17 @Id
18 @GeneratedValue(strategy = GenerationType.IDENTITY)
19 private long id;
20
21 @Column
22 @Temporal(TemporalType.TIMESTAMP)
23 private Date creationDate;
24
25 @Column
26 private String firstName;
27
28 @Column
29 private String lastName;
30
31 @Column
32 private String address;
33
34 @Column
35 private String phoneNumber;
36
37 public void setId(long id){this.id=id;}
38 public long getId(){return this.id;}
39
40 public void setCreationDate(Date creationDate){this.creationDate=creationDate;}
41 public Date getCreationDate(){return this.creationDate;}
42
43 public void setFirstName(String firstName){this.firstName=firstName;}
44 public String getFirstName(){return this.firstName;}
45
46 public void setLastName(String lastName){this.lastName=lastName;}
47 public String getLastName(){return this.lastName;}
48
49 public void setAddress(String address){this.address=address;}
50 public String getAddress(){return this.address;}
51
52 public void setPhoneNumber(String phoneNumber){this.phoneNumber=phoneNumber;}
53 public String getPhoneNumber(){return this.phoneNumber;}
54
55 }
src/main/resources/META-INF/ejb-jar.xml
1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
4 version="3.0">
5 <enterprise-beans>
6 <session>
7 <ejb-name>ContactsWS</ejb-name>
8 <business-local>org.allowed.bitarus.ContactsLocal</business-local>
9 <business-remote>org.allowed.bitarus.ContactsRemote</business-remote>
10 <ejb-class>org.allowed.bitarus.ContactsWS</ejb-class>
11 <session-type>Stateless</session-type>
12 <transaction-type>Container</transaction-type>
13 </session>
14 </enterprise-beans>
15 </ejb-jar>
src/main/resources/META-INF/persistence.xml
1 <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
2 <persistence-unit name="puContactsDefaultDS" transaction-type="JTA">
3 <jta-data-source>java:/DefaultDS</jta-data-source>
4 <properties>
5 <property name="hibernate.show_sql" value="true" />
6 <property name="hibernate.format_sql" value="true" />
7 <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
8 <property name="hibernate.hbm2ddl.auto" value="update"/>
9 </properties>
10 </persistence-unit>
11 </persistence>
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>org.allowed.bitarus</groupId>
6 <artifactId>ejbcontacts</artifactId>
7 <version>0.0.1</version>
8 <packaging>ejb</packaging>
9 <dependencies>
10 <dependency>
11 <groupId>javaee</groupId>
12 <artifactId>javaee-api</artifactId>
13 <version>5</version>
14 <scope>provided</scope>
15 </dependency>
16 </dependencies>
17 <build>
18 <sourceDirectory>src</sourceDirectory>
19 <plugins>
20 <plugin>
21 <artifactId>maven-compiler-plugin</artifactId>
22 <configuration>
23 <source>1.5</source>
24 <target>1.5</target>
25 </configuration>
26 </plugin>
27 </plugins>
28 </build>
29 </project>
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>