理解javaEE


web应用是要跑在应用服务器里的,比如tomcat,jetty,weblogic等等。

应用服务器可以跑很多个web应用,怎么把这个应用加载起来呢。通常都是有web.xml这个web描述文件。服务器在加载项目(war包等)时首先读取该文件。根据其配置进行初始化,web.xml内容并不多,<context-param><listener><filter><servlet>等这几个是核心。

首先我们知道,每个应用启动之后,服务器会创建一个“上下文”给它,通俗点讲,就是服务器给开辟了一个地方供应用放存取一些键值对数值。这个上下文叫servletContext。

服务器先会读取<context-param>里的键值对。这些键值对就存放在servletContext中,供listener或者servlet实例去访问。

之后,listener部分会被读取和解析,大名鼎鼎的spring通常都是依靠listener来添加到我们的MVC系统里来启动的。我们在web.xml中看到的就是如下几行

<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

这个listener类启动后会加载spring自己的容器 WebApplicationContext,也就是IoC容器。保存在servletContext中。这是扩展,以后再说。

这个时候listener实现类已经可以读取添加到servletContenxt的键值对了,也即<context-param>中的内容

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
        classpath:application-security.xml
        classpath:application-context.xml
    </param-value>
	</context-param>

通常我们在这里指定配置文件的地址。


listener之后就是filter了

<filter-name>encoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
这个没啥说的,指定一个类当filter,当然要实现接口。然后指定这个类拦截哪些url,是否登陆,身份验证等经常用到。框架struts2就是用filter来实现拦截请求然后交给struts核心去处理的。


最后是servlet,这就是基本内容了,刚开始学习EE时搭建的网站肯定都是sevlet+jsp起来的。servlet就是最早最基本的控制器,不过框架接手这些事情后,servlet往往都不用写了。

一般通常用作随应用启动时做点任务写在这里,比如起个定时任务之类的。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值