Struts2知识积累(1)_Servlet基础篇

1.简单介绍:Java Servlet Api 将HTTP公开给java平台,核心对象是Servlet、request、response.Servlet是一个单例(singleton)的java对象,他的全部用途在于接收请求,以及在任意的后端处理之后返回响应,中间执行适当的后台逻辑。Servlet规范的版本常用的为2.4,最新版是3.1,在web.xml中引入2.4dtd:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

做web应用开发,一般都是通过一个Servlet提供的统一请求入口,将指定的资源映射到这个Servlet,在这个Servlet中进行框架的初始化配置,访问Web页面的数据,进行逻辑处理后,将结果数据与表现层相融合并展现给用户。WEB框架想要在符合Servlet规范中运行,同样也要符合Servlet规范。
2.一个WEB框架注入到一个Servlet中,主要涉及到Servlet规范中一下部分:部署描述符,映射请求到Servlet,Servlet生存周期,请求分发。2.1部署描述符,就是位于WEB应用的/WEB-INF目录下的web.xml文件,是WEB应用程序不可分割的部分,管理着web应用程序的配置。
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?,
(servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>

2.2映射请求到Servlet,web容器要确定转到哪一个WEB应用程序。通过请求的URL开始匹配,映射到Servlet上下文路径。
http://(协议)+   localhost:8080(主机名+端口)+   /WebApp(Servlet上下文)+   /demo(包命名空间)+      /HelloWorld.action(动作名.action) 

2.3 Servlet生存周期,javax.servlet.Servlet是所有的Servlet必须实现或者间接实现的接口,实际中通常是通过继承javax.servlet.GenericServlet或者java.servlet.http.HttpServlet类来实现这个接口。定义了5个方法分别是:init()_在容器装入Servlet时执行Servlet容器实例化后只调用一次init方法,必须在Servlet接受到任何请求前完成,通常用来进行一些资源的管理和 初始化,getServletConfig()_返回一个传递到init方法的ServletConfig对象,,Service()_应用程序的逻辑进入点,是servlet方法的核心,WEB容器调用这个方法响应进入的请求只有servlet成功被init()后才会被调用,getServletInfo()_返回一个字符串对象提供有关Servlet信息如作者,版本destroy()_容器在移除Servlet执行。
3.Struts2注入到Servlet的配置:web.xml
<filter>
	    <filter-name>struts2</filter-name>
	    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class>
	    <init-param>
        	<param-name>actionPackages</param-name>
        	<param-value>com.Struts2</param-value>
        </init-param>

	</filter>
        <filter-mapping>
	    <filter-name>struts2</filter-name>
	    <url-pattern>*.action</url-pattern>
	</filter-mapping>

3.ServletAPI的高级功能,如会话机制,可以关联一个给定客户的请求组。通过一套面向对象的抽象直接封装客户/服务器交互的细节,我们不必自己解析传入的HTTP请求,而是收到一个整洁的、已经在Java中包装好的请求对象。servletapi是个一个底层技术,作为基础设施,Servlet提供可靠的基本功能,在其上构建健壮的web应用程序。对于web应用程序的日常需求,ServletApi没有提供这方面的解决方案。而这些日常任务需要像Struts2这样的web应用程序框架来处理。
4、在servletapi解决了低层客户/服务器问题之后,我们程序员关注应用程序级别的问题。有很多日常任务是所有web应用程序处理请求解决的其中包括:请求参数到java类型的数据绑定,验证数据,访问业务逻辑,访问数据层,呈现表示层(html,jsp等),提供国际化和本地化的支持。
5、引入Struts2框架,struts2是实现mvc设计模式的第二代web应用程序框架。相比struts1引入了新特性:用来从动作逻辑中分层出横切关注点的拦截器,减少和消除xml配置基于注解方式的配置,一个贯彻整个框架的强大的OGNL表达式(object-GraphNavigation language)对象导航语言,ui标签api。mvc的3个关注点:模型,视图,控制器。在struts2中,分别通过动作action,result,FilterDispatch实现。
下一章:Struts2核心概念:动作,拦截器和类型转换

猜你喜欢

转载自cjp1989.iteye.com/blog/1748042