Java Web开发学习笔记(1)

Web.xml中Servlet中的配置

->Servlet配置

Servlet

servlet-name:名称

servlet-class:类名称

init-param:初始化参数节

param-name:参数名称

param-value:参数值

load-on-straup:是否在启动时加载,为1时自动加载,为0时有请求时才加载

实际中如果使用了框架,例如Structs,JSF,Spring都使用此方式预加载。

Servlet-mapping配置

servlet-mapping

servlet-name

url-pattern:地址格式,可以使用通配符。

同一个Servlet可以配置多个url-pattern

后缀名称在这里的意义并不是很大,因为可以直接在这里定义不同的后缀名称。

Context Param

这个参数是所有的Servlet都能够读取的参数。配置规则如下

context-param

param-name

param-value

可以有多个同样的配置节配置不同的参数,Servlet中通过使用getServletConfig().getServletContext()方法获取servletContext对象,然后使用其getInitParameter()获取所有的context-param参数名称和参数值列表

另一个可选的方式是把参数配置写到properties文件里面。

资源注入@Resource

Annotation是Java5.0引入的新特特特性,以@符号作为标记。

例如

@Resource(name=“messageFormXml”)

private String message;

代表在运行时,只要在web.xml中配置一个messageFormXml的参数就可以了。

也可以写成下面的形式

private @Resource(name=“messageFormXml”) String message;

资源注释添加后,需要在web.xml中添加对应的节点后,才能够被读取到。

Servlet生命周期

所有用户共用同一个Servlet实例

init方法和destroy方法只会调用一次,service在每次请求时都会被执行。

可以考虑把一些配置型的事务放到init中进行,这样,可以减少执行的次数。

Servlet线程安全

Servlet不是线程安全的,所以公共私有变量有可能会存在线程同步的问题,在Servlet中定义属性的话,如果存在写入的可能,则会导致线程数据同步问题