“J2EE高级编程”笔记(二)

HttpServlet深入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void init() {
//若有需要,修改这个init
}
public void init(ServletConfig sc) {
this.sc = sc;
//然后在这里调用。尽量不要重写该带参数的init函数
this.init();
}
public void service(HttpServletRequest req,
HttpServletResponse res) throws ServletException,
IOException {
……………………
}
}

webapp下建立子文件夹(如first),first下建立WEB-INF文件夹(在旧标准中是必须的,新标准已改为非必须),WEB-INF下有libclasses文件夹,以及文件web.xml(此为配置文件)

以下是web.xml文件大概的样子。它一般在webapp/ROOT/WEB-INF文件夹下。

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" version="3.1" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<display-name>Welcome to Tomcat</display-name>
<description> Welcome to Tomcat </description>
</web-app>

注意,XML文件的根元素只有一个。
关于XML的其它知识:

我们重点关注servlet相关的部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>al</servlet-name>
<servlet-class>HelloServlet</servlet-class>
<!--初始参数,可有可无-->
<init-param>
<param-name>port</param-name>
<param-value>8081</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>al</servlet-name>
<!--url-pattern支持*等适配符-->
<url-pattern>/hello.html</url-pattern>
</servlet-mapping>
</web-app>

该文件的具体含义,可以参考:菜鸟教程-web.xml文件详解

Servlet的部署方式:
一,拷到webapp下
二,config/server里Host标签下这样修改:

1
<Context path="/xyz" docBase="c:\abc" />

然后爱放哪儿放哪儿

三,如果用 eclipseforJavaEE 等IDE,就没那么麻烦了。其中 eclipseforJavaEE 在新建工程的配置向导中会帮你设置好servlet-nameinit-paramservlet-mapping等。

替代web.xml的方式:java config