Servet是运行在服务器端的用于响应客户端请求的java对象。动态Web应用的原理就是基于请求-响应模式,而Servlet就是为请求-响应模式服务的。下面来看一个Servlet的helloworld小项目。
本文使用的IDE是MyEclipse,可能会和Eclipse有一些小出入,不过没有太大影响。
首先新建一个Dynamic Web Project(动态Web应用项目)。
项目名称为FirstServlet,运行环境这里我选择的是自己安装的Tomcat8.0,其实也可以使用Myeclipse自带的Tomcat或者自己安装的别的Tomcat版本。
点击next,在该页面选择自动生成web.xml文件,可以省下后面自己创建的功夫。
点击Finish,生成如下的项目目录。
在目录中src子目录下,新建一个servlet文件,如下图,勾选必要的两个方法doGet(),doPost(),其他的方法暂时用不到,可以不勾上。
点击next后来到本页面,可以在这里配置servlet的名称,URL-PATTERN等属性,在这里配置后,自动会在web.xml加上当前servlet文件的配置项,也省下不少功夫。
到这一步servlet就创建完成了。下面看看自动生成的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServlet</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.jswang.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
可以看到在web.xml中servlet已经配置完毕,下面就可以编写自己的servlet逻辑了。
这里编写了一个简单的页面请求处理逻辑,当客户端请求该servlet时,该servlet向客户端的页面输出相应文字,并且如果客户端在URL请求中设置了参数,也将参数读取出来并且返回客户端。
package com.jswang.servlet;
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;
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = -21555774697053050L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置页面内容编码格式为UTF-8,避免中文乱码
response.setContentType("text/html; charset=utf-8");
// 获取response中的输出流
PrintWriter out = response.getWriter();
out.println("你好,这是通过MyServlet输出的文字<br>");
// 获取通过Url传来的参数,可能为空
String urlParam = request.getParameter("param");
if (null != urlParam) {
out.println("通过URL传递的参数值为:" + urlParam + "<br>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
运行结果:
右键点击该项目运行后,在浏览器输入域名:
输入带参数的域名: