Servlet基础

java web目录结构

每个应用的目录是一样的,都会包含以下内容

webapp
--WEB-INF
-----classes servlet类目录
-----lib 项目中用到的各种jar
-----web.xml配置文件

--JSP/html文件

创建自己servlet的基本步骤

1.修改tomcat目录下的server.xml文件,在Host元素中添加Context内容

<Context path="blog" docBase="Users/xxx/xxx" /> <!--path是添加到域名后面的路径,docBase是映射到本机电脑的路径,即app所在目录-->

2.修改web.xml将创建好的servlet类进行部署

<web-app>
	<servlet>
		<servlet-name>newName</servlet-name>
		<servlet-class>net.ihaha.httpservlet</servlet-class>
		<load-on-startup>1</load-on-startup><!--多个servlet时,数字代表启动顺序-->
		<init-param><!--这个参数只针对newName这个servlet-->
			<param-name>encoding</param-name>
			<param-value>gb2312</param-value>
		</init-param>
	</servlet>
	
	<context-param><!--整个Context(web-app)共享的参数-->
		<param-name>web-app-name</param-oname>
		<param-value>blog</param-value>
	</context-param>
	
	<servlet-mapping>
		<servlet-name>newName</servlet-name>
		<url-pattern>/httpservlet</url-pattern>
	</servlet-mapping>
</web-app>

注意:

1)一个servlet-name创建之后,可以由任意多个<servlet-mapping>对其进行映射

2)load-on-startup 可以指定某个servlet在服务器启动的时候就被加载,用来实现一些初始化,或者启动需要运行的servlet比如定时等。

当指定多个load-on-startup时,多个服务将按照load-on-startup指定的启动顺序(中间的数字)执行。

3)url-pattern匹配过程:

当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/blog/aaa.html,我的应用上下文是blog,容器会将http://localhost/blog去掉,剩下的/aaa.html部分拿来做servlet的映射匹配。这个映射匹配过程是有顺序的,

url-pattern可以使用*通配符,优先级规则如下:1)优先精准匹配 2)*.do形式的匹配优先级最低。

但是通配符只能有两种固定的格式:一种格式是(*.扩展名),注意不带斜杠,另一种格式是/开头,并以/*结尾。

4)init-param则是属于固定的servlet的,如果想定义web-app全局的变量可以使用<context-param>。

开发servlet可以通过实现三个接口来实现

1)实现servlet
2)实现GenericServlet(servlet的子类)

3)实现HttpServlet 实际开发中一般使用这个(GenericServlet的子类)

servlet是个单例,共享资源需要同步

servlet在第一次请求后创建一个对象,以后会一直驻留在内存中,且是个单例,所有的用户共用一个对象,所以如果遇到共享的成员变量,需要进行同步。不需要共享的变量尽量放在方法中(比如doGet,doPut),用局部变量来实现,不需要进行同步。
<完>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值