Servlet and JSP development with Eclipse
2013-11-21 17:17
267 查看
Servlet and JSP development with Eclipse WTP
http://www.vogella.com/articles/EclipseWTP/article.htmlEclipse Web Tool Platform (WTP)
This tutorial describes the development of servlets and JSPs with Eclipse WTP. This tutorial is based on Eclipse 3.7 (Indigo) and Tomcat 6.0 and JDK 1.6.
Table of Contents
1. Eclipse Web
Tool Platform2. Tomcat
Installation3. Installation
of WTP4. WTP Configuration
4.1.
Setting up runtime environments4.2. Server5. Servlets
5.1. Project5.2. Creating Data
Access Object5.3.
Creating the Servlet5.4. Run6. JavaServer Pages (JSPs)
6.1. Create
Project6.2. Create
the JSP6.3. Run it6.4. Adjust
web.xml7. JSP's and Servlets
7.1.
Create Project7.2.
Create the Controller (servlet)7.3. Create
the Views (JSP)7.4. Run it8. Web Archive - How
to create a war file from Eclipse9. Additional Eclipse
WTP resources10. Thank you11. Questions and
Discussion12. Links and Literature
12.1. Source
Code12.2. Web development
resources12.3. vogella
Resources
1. Eclipse Web Tool Platform
Eclipse WTP provides tools for developing standard Java web applications and Java EE applications. Typical web artifacts in a Java environment are HTMLpages, XML files, webservices, servlets and JSPs. Eclipse WTP simplifies the creation these web artifacts and provides runtime environments in which these artifacts can be deployed, started and debugged.
In Eclipse WTP you create Dynamic Web Projects. These projects provide the necessary functionality to run, debug and deploy Java web applications. If you
are completely new to Java web development you may want to read Introduction to Java Webdevelopment .
Eclipse WTP supports all mayor webcontainers, e.g. Jetty and Apache Tomcat as well as the mayor Java EE application server. This tutorial uses Apache Tomcat as a webcontainer.
2. Tomcat Installation
Apache Tomcat Tutorial for instructions how toinstall Apache Tomcat.
After the installation test if Tomcat in correctly installed by opening a browser to http://localhost:8080/. This should open a information page of Tomcat.
Afterwards stop Tomcat. Eclipse WTP needs to start Tomcat itself for its deployments.
3. Installation of WTP
In case you have downloaded an Eclipse version for Java development, you can update it via theEclipseUpdate Manager . Install all packages from the category "Web, XML, Java EE Development and OSGi Enterprise Development" except "PHP Development" and the "RAP" Tooling.
For an introduction in the Eclipse IDE please see the Eclipse
IDE Tutorial .
4. WTP Configuration
4.1. Setting up runtime environments
To configure Eclipse WTP select from the menu Window → Preferences → Server → RuntimeEnvironments. Press the Add button.
Select your version of Tomcat.
To compile the JSP into servlets you need to use the JDK. You can check your setup by clicking on theInstalled JRE button.
Press Finish and then OK. You are now ready to use Tomcat with WTP.
4.2. Server
During development you will create your server. You can manageprobably you server via the Serverview .You can stop and start the server via the Window → Show View → Servers → Servers
menu menu.
5. Servlets
5.1. Project
We will create a Servlet which works as a webpage counter. This servlet keeps track of the number of visitors of a webpage. The servlet will persists the number of visitors in a text file. Create a newDynamicWeb Project called de.vogella.wtp.filecounter by selecting File → New → Other... → Web →Dynamic
Web Project.
Press finished. If Eclipse ask you, to switch to the Java EE Perspective answer yes.
A new project has been created with the standard structure of a Java web application. The
WEB-INF/libdirectory holds all the JAR files that the Java web application
requires.
5.2. Creating Data Access Object
Create a new package called de.vogella.wtp.filecounter.dao.Create the Java class which will provide the number of visitors write this value to a file.
package de.vogella.wtp.filecounter.dao; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class FileDao { public int getCount() { int count = 0; // Load the file with the counter FileReader fileReader = null; BufferedReader bufferedReader = null; PrintWriter writer = null ; try { File f = new File("FileCounter.initial"); if (!f.exists()) { f.createNewFile(); writer = new PrintWriter(new FileWriter(f)); writer.println(0); } if (writer !=null){ writer.close(); } fileReader = new FileReader(f); bufferedReader = new BufferedReader(fileReader); String initial = bufferedReader.readLine(); count = Integer.parseInt(initial); } catch (Exception ex) { if (writer !=null){ writer.close(); } } if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return count; } public void save(int count) throws Exception { FileWriter fileWriter = null; PrintWriter printWriter = null; fileWriter = new FileWriter("FileCounter.initial"); printWriter = new PrintWriter(fileWriter); printWriter.println(count); // make sure to close the file if (printWriter != null) { printWriter.close(); } } }
Tip
This Java class is not a servlet, it is a normal Java class.
5.3. Creating the Servlet
Create a servlet. Right-click on the folder Webcontent and select New-> Other. Select Web -> Servlet. Enter the following data.Press finish.
You could also create a servlet without the wizard. The wizard creates a Java class which extends the
javax.servlet.http.HpptServletand adds the servlet settings
to the
web.xmlfile.
Enter the following code.
package de.vogella.wtp.filecounter.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import de.vogella.wtp.filecounter.dao.FileDao;/**
* Servlet implementation class FileCounter
*/
public class FileCounter extends HttpServlet {
private static final long serialVersionUID = 1L;
int count;
private FileDao dao;
public void init() throws ServletException {
dao = new FileDao();
try {
count = dao.getCount();
} catch (Exception e) {
getServletContext().log("An exception occurred in FileCounter", e);
throw new ServletException("An exception occurred in FileCounter"
+ e.getMessage());
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Set a cookie for the user, so that the counter does not increate
// every time the user press refresh
HttpSession session = request.getSession(true);
// Set the session valid for 5 secs
session.setMaxInactiveInterval(5);
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
if (session.isNew()) {
count++;
}
out.println("This site has been accessed " + count + " times.");
}
public void destroy() {
super.destroy();
try {
dao.save(count);
} catch (Exception e) {
e.printStackTrace();
}
}
}
This code will read the counter from a file on the server and return plain text to the browser. The servlet will increase the counter if the user was 5 seconds inactive.
5.4. Run
Select your servlet, right-click on it and select Run As -> Run on Server.Select your server and include your servlet so that is runs on the server.
Press finish. You should see the Eclipse internal web browser displaying your the count number. If you wait 5 seconds and refresh the number should increase.
Congratulations. You created your first working servlet with Eclipse WTP!
6. JavaServer Pages (JSPs)
6.1. Create Project
The following will demonstrate the creation and usage of a JaveServer Page. Create a new Dynamic Web Project called de.vogella.wtp.jspsimple and a packagewith the same name.
6.2. Create the JSP
Select the folder "WebContent", right-click -> New -> JSP and create the JSP "FirstJSP". Select the "New JSP File (html)" template.Create the following coding.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>JSP with the current date</title> </head> <body> <%java.text.DateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy"); %> <h1>Current Date: <%= df.format(new java.util.Date()) %> </h1> </body> </html>
6.3. Run it
Start your webapplication. You find your JSP under the URL "http://localhost:8080/de.vogella.wtp.jspsimple/FirstJSP.jsp".
6.4. Adjust web.xml
Set the JSP page as the welcome page for your application to have it automatically opened if the application is started. Modify the WebContent/WEB-INF/web.xmlfile.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>de.vogella.wtp.jspsimple</display-name> <welcome-file-list> <welcome-file>FirstJSP.jsp</welcome-file> </welcome-file-list> </web-app>
This allows to start the JSP via the path ""http://localhost:8080/de.vogella.wtp.jspsimple".
7. JSP's and Servlets
7.1. Create Project
This example will demonstrate the usage of JSPs for the display and a servlet as the controller for a web application. The servlet will dispatch the request to the correct JSP.Create the Dynamic Web Project "de.vogella.wtp.jsp" and the package "de.vogella.wtp.jsp"
7.2. Create the Controller (servlet)
Create a new servlet called Controller in the de.vogella.wtp.jsp.controllerpackage.
package de.vogella.wtp.jsp.controller; import java.io.IOException; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class Controller
*/
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String DELETE_JSP = "/Delete.jsp";
private static String EDIT_JSP = "/Edit.jsp";
private static String SHOWALL_JSP = "/ShowAll.jsp";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String forward="";
// Get a map of the request parameters
@SuppressWarnings("unchecked")
Map parameters = request.getParameterMap();
if (parameters.containsKey("delete")){
forward = DELETE_JSP;
} else if (parameters.containsKey("edit")){
forward = EDIT_JSP;
} else {
forward = SHOWALL_JSP;
}
RequestDispatcher view = request.getRequestDispatcher(forward);
view.forward(request, response);
}
}
This controller checks which parameters is passed to the servlet and then forward the request to the correct JSP.
7.3. Create the Views (JSP)
In the folder "WebContent" create the new JSP "ShowAll" with the following code.<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Show all names</title> </head> <body> <form method="GET" action='Controller' name="showall"> <table> <tr> <td><input type="checkbox" name="id1" /></td> <td>Jim</td> <td>Knopf</td> </tr> <tr> <td><input type="checkbox" name="id2" /></td> <td>Jim</td> <td>Bean</td> </tr> </table> <p><input type="submit" name="delete" value="delete" /> <input type="submit" name="edit" value="edit" /> <input type="reset" value="reset" /></p> </form> </body> </html>
Create the "Delete.jsp" JSP.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> Delete successful <form method="GET" action='Controller' name="delete_success"><input type="submit" value="back"></form> </body> </html>
Create the JSP "Edit.jsp".
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form method="GET" action='Controller' name="edit"> <table> <tr> <td>First name:</td> <td><input type="text" name="firstName"></td> </tr> <tr> <td>Last name:</td> <td><input type="text" name="lastName"></td> </tr> <tr> <td><input type="submit" value="save"> <input type="reset" value="reset"> <input type="submit" value="back"> </td> </tr> </table> </form> </body> </html>
7.4. Run it
Run your new application by running "ShowAll.jsp" on the server. You should be able to navigate between the pages.
8. Web Archive - How to create a war file from Eclipse
´The following describes how to create a Web Archive (war) from Eclipse.Right-click on the project and select "Export".
Specify the target directory and press finish.
You can now import the War file to your production Tomcat system and test the web application.
9. Additional Eclipse WTP resources
The development of webservices with Eclipse WTP is covered in Webserviceswith Axis2 and the Eclipse Web Tool Platform (WTP) - Tutorial.
The development of JavaServerFaces is covered in JavaServer
Faces (JSF) development with Eclipse WTP JSF - Tutorial and JSF with Apache Myfaces Trinidad
and Eclipse .
相关文章推荐
- Eclipse AspectJ : Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
- AJAX with JSP and Servlet using Jquery Example
- Tomcat+Eclipse+Ubuntu ××× Servlet.service() for servlet [jsp] in context with path [] threw exceptio
- Python Development with PyDev and Eclipse - Tutorial
- Agile Java Development with Spring, Hibernate and Eclipse
- Introduction to Model Driven Development with AndroMDA
- web网页Eclipse,jsp+Servlet+javaBean,访问Mysql链接数据库
- Develop aspect-oriented Java applications with Eclipse and AJDT
- 五道口宅男 - Android NDK and OpenCV Development With Android Studio
- Eclipse jsp页面javax.servlet.jsp.PageContext cannot be resolved to a type 错误解决办法
- Why use Servlets & JSPs: an introduction(Head First Servlets and JSP)
- Mini MVC Tutorial: hands-on MVC(Head First Servlets and JSP)
- Expecting "jsp:param" standard action with "name" and "value" attributes
- 【Head First Servlets and JSP】笔记18:JSP指令
- Eclipse javax.servlet.jsp.PageContext cannot be resolved to a type 错误解决办法
- How to Install and Use JRebel with WebLogic and Eclipse
- Servlet API and JSP API
- 【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略
- 图解利用Eclipse3+Lomboz3+Tomcat开发JSP -- 4.一个Servlet实例
- Solutions for common Android development problems with the Eclipse IDE- Tutorial