- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Servlet方法生命周期及执行原理详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
定义一个类,实现Servlet接口 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public
class
ServletDemo1
implements
Servlet {
/**
* 初始化方法
* 在Servlet被创建时,执行。只会执行一次
* @param servletConfig
* @throws ServletException
* */
@Override
public
void
init(ServletConfig servletConfig)
throws
ServletException {
System.out.println(
"init......"
);
}
/**
* 获取ServletConfig对象
* ServletCongig:Servlet的配置对象
* @return
* */
@Override
public
ServletConfig getServletConfig() {
return
null
;
}
/**
* 提供服务方法
* 每一次Servlet被访问时,执行。可执行多次
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
* */
@Override
public
void
service(ServletRequest servletRequest, ServletResponse servletResponse)
throws
ServletException, IOException {
System.out.println(
"服务小皮皮美滋滋!"
);
}
/**
* 获取Servlet的一些详细,版本,作者等等
* @return
* */
@Override
public
String getServletInfo() {
return
null
;
}
/**
* 销毁方法
* 在服务器正常关闭时执行。执行一次
* */
@Override
public
void
destroy() {
System.out.println(
"服务关闭了..."
);
}
}
|
配置Servlet 。
在web.xml中配置 。
1
2
3
4
5
6
7
8
9
10
|
<!--配置Servlet -->
<
servlet
>
<
servlet-name
>demo1</
servlet-name
>
<
servlet-class
>xppmzz.ServletDemo1</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>demo1</
servlet-name
>
<
url-pattern
>/demo1</
url-pattern
>
</
servlet-mapping
>
|
点击IDEA中Tomcat的启动按钮,在浏览器中输入http://localhost:8080/demo1.
观察IDEA输出窗口输出内容.
URL
路径,获取访问的Servlet
的资源路径。web.xm
l文件,是否有对应的<url-pattern>
标签体内容。<servlet-class>
全类名。tomcat
会将字节码文件加载进内存,并且创建其对象。
默认情况下,第一次被访问时,Servlet被创建.
在<servlet>标签下配置:
第一次被访问时,创建<load-on-startup>的值为负数.
在服务器启动时,创建<load-on-startup>的值为0或正整数.
1
2
3
4
5
|
<
servlet
>
<
servlet-name
>demo1</
servlet-name
>
<
servlet-class
>xppmzz.ServletDemo1</
servlet-class
>
<
load-on-startup
>5</
load-on-startup
>
</
servlet
>
|
如果为负数,则在浏览器中第一次输入http://localhost:8080/demo1才会执行init方法。0或者正整数会在Tomcat第一次启动时执行init方法.
因此,多个用户同时访问时,可能存在线程安全问题.
解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值 。
每次访问Servlet时,Service方法都会被调用一次.
好处:支持注解配置,可以不需要web.xml.
步骤:
创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml.
定义一个类,实现Servlet接口.
复写方法.
在类上使用@WebServlet注解,进行配置。@WebServlet("资源路径") 。
代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@Target
({ElementType.TYPE})
@Retention
(RetentionPolicy.RUNTIME)
@Documented
public
@interface
WebServlet {
String name()
default
""
;
//相当于<Servlet-name>
String[] value()
default
{};
//代表urlPatterns()属性配置
String[] urlPatterns()
default
{};
//相当于<url-pattern>
int
loadOnStartup()
default
-
1
;
//相当于<load-on-startup>
WebInitParam[] initParams()
default
{};
boolean
asyncSupported()
default
false
;
String smallIcon()
default
""
;
String largeIcon()
default
""
;
String description()
default
""
;
String displayName()
default
""
;
}
|
Servlet – 接口 。
GenericServlet – 抽象类 。
HttpServlet – 抽象类 。
将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象.
将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可 。
1
2
3
4
5
6
7
|
@WebServlet
(
"/demo2"
)
public
class
ServletDemo2
extends
GenericServlet {
@Override
public
void
service(ServletRequest servletRequest, ServletResponse servletResponse)
throws
ServletException, IOException {
System.out.println(
"GenericServlet...."
);
}
}
|
对http协议的一种封装,简化操作.
定义类继承HttpServlet.
复写doGet/doPost方法.
1
2
3
4
5
6
7
8
9
10
11
12
|
@WebServlet
(
"/demo3"
)
public
class
ServletDemo3
extends
HttpServlet {
@Override
protected
void
doGet(HttpServletRequest req, HttpServletResponse resp)
throws
ServletException, IOException {
System.out.println(
"doGet......"
);
}
@Override
protected
void
doPost(HttpServletRequest req, HttpServletResponse resp)
throws
ServletException, IOException {
System.out.println(
"doPost......"
);
}
}
|
urlpartten:Servlet访问路径.
一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})路径定义规则:/xxx:路径匹配。/xxx/xxx:多层路径,目录结构。*.do:扩展名匹配.
以上就是Servlet方法生命周期及执行原理详解的详细内容,更多关于Servlet的资料请关注我其它相关文章! 。
原文链接:https://blog.csdn.net/qq_45966440/article/details/119704842 。
最后此篇关于Servlet方法生命周期及执行原理详解的文章就讲到这里了,如果你想了解更多关于Servlet方法生命周期及执行原理详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!