一.部署第一个JavaWeb程序
1.新建project,搜索并创建web工程(Dynamic Web Project)
2.在工程中WebContent目录下创建第一个HTML文件
3.双击打开html,编写
4.鼠标右键点击项目,部署运行项目(Run on Server)
5.通过浏览器查看效果
二.javaWeb应用工程目录结构
src:存放Java源代码的目录。
Libraries:存放的是Tomcat及JRE中的jar包
build:自动编译.java文件的目录
WebContent: Web根目录,存放的是需要部署到服务器的文件
MEAT-INF:是存放工程自身相关的一些信息,元文件信息,通常由开发工具和环境自动生成。
MANIFEST.MF:配置清单文件
WEB-INF:这个目录下的文件,是不能被客户端直接访问的。
classes:存放Java字节码文件的目录。
lib:用于存放该工程用到的库。
web.xml:web工程的配置文件,完成用户请求的逻辑名称到真正的servlet类的映射。
客户端能访问的资源(*html或*.jpg)必须跟WEB-INF在同一级目录,即放在Web根目录下的资源,从客户端是可以通过URL地址直接访问的。
三.在.xml中servlet配置
示例代码
//创建servlet类
package com.neu.first;
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;
/* 第一步:继承httpservlet
* 第二步:重写service方法
* 加载顺序
* 拓展:每当servlet被第一次访问的时候,会生成一个对象(调用init方法) servlet是单例
* 2.<load-on-startup></load-on-startup>默认为0,当定义为整数时,在服务器启动时加载,整数越小,优先级越高
*/
public class FirstServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
//加载初始化
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("firstServlet被加载了");
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println("进入service方法");
//设置字符响应集
//arg1.setCharacterEncoding("utf-8");
//设置响应头
arg1.setContentType("text/html;charSet=utf-8");
//获取响应的流
PrintWriter pw=arg1.getWriter();
//输出内容
pw.write("<h1>从服务器游一圈回来了<h1>");
pw.flush();
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("firstServlet被摧毁了");
System.out.println("firstServlet被摧毁了");
}
}
部署:
<?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" version="3.1">
<display-name>web_zk</display-name>
<!-- 定义servlet容器 -->
<servlet>
<servlet-name>firstDemo</servlet-name>
<servlet-class>com.neu.first.FirstServlet</servlet-class>
<!-- <load-on-startup>1</load-on-startup> -->
</servlet>
<!-- 为容器绑定一个地址 -->
<servlet-mapping>
<servlet-name>firstDemo</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>thirdDemo</servlet-name>
<servlet-class>com.neu.first.ThirdServlet</servlet-class>
<!-- <load-on-startup>2</load-on-startup> -->
<init-param>
<param-name>张三</param-name>
<param-value>345678</param-value>
</init-param>
<init-param>
<param-name>李四</param-name>
<param-value>456789</param-value>
</init-param>
<init-param>
<param-name>王五</param-name>
<param-value>567890</param-value>
</init-param>
</servlet>
<!-- 为容器绑定一个地址 -->
<servlet-mapping>
<servlet-name>thirdDemo</servlet-name>
<url-pattern>/third</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>
servlet接口中的一些主要方法
方法名称 | 方法描述 |
init(ServletConfig config) | Servlet初始化方法,在Servlet实例化后,容器调用该方法进行Servlet的初始化,init()方法只能被调用一次,如果此方法没有正常结束,就会抛出一个ServletException异常,一旦抛出该异常,Servlet将不再执行,随后对其进行再次调用会,容器会重新载入并再次运行init()方法。 |
service(ServletRequest req ,ServletResponse resp) |
Servlet的服务方法。当用户对Servlet发出请求时容器会调用该方法处理用户的请求 |
destroy() | Servlet的销毁方法。容器在终止Servlet服务前调用此方法,容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时,destroy()不被执行 |
getServletConfig() | 此方法可以让Servlet在任何时候获得ServletConfig对象 |
getServletInfo() | 此方法返回一个String对象,该对象包含Servlet的信息,例如:开发者、创建日期、描述信息等。该方法也可用于容器 |
在web.xml中通过“<servlet> </servlet>”元素声明Servlet,其子元素及其描述如下表:
属性名 | 类型 | 描述 |
<description> | String | 指定该Servlet的描述信息,等价于@WebServlet 的description属性 |
<display-name> | String | 指定该Servlet的显示名,通常配合工具使用,等价于@WebServlet的displayName属性 |
<servlet-name> | String | 指定Servlet的名称,一般与Servlet的类名相同,要求在一个web.xml文件内名字唯一,等价于@WebServlet的name属性 |
<servlet-class> | String | 指定Servlet类的全限定名,即:包名.类名 |
<init-param> |
| 指定Servlet初始化参数,等价于@WebServlet的initParams属性,若有多个参数可重复定义此元素。此元素为可选配置 |
<param-name> | String | 指定初始参数名 |
<param-value> | String | 指定初始参数名对应的值 |
<load-on-startup> | int | 指定Servlet的加载顺序,等价于@WebServlet的loadOnStartup属性 |
<async-supported> | boolean | 指定Servlet是否支持异步操作模式,默认为false,等价于@WebServlet的asyncSupported属性 |