java EE(Java Plantfor Enterprise Edition)是sun公司推出的企业级应用程序版本。这个版本以前成为J2EE.能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端java应用程序。java EE 是在java SE的基础上构建的,它提供Web服务、组建模型、管理和通信API,可以用来实现企业级的面向服务体系结构和Web 2.0应用程序。
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
java EE 的体系结构:
1、表示层(HTML、JavaScript、Ajax)
2、中间层(JSP、Servlet、JSTL、JavaBean)(Struts)
3、数据层(JDBC)(Hibernate)
三层体系结构的优点?
1、耦合性低 2、扩展性好 3、复用性好 4、便于分工
j2ee常用的设计模式:
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibility(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,
通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要
定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同
的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
HTTP协议的提交方式:
1、GET——用URL传递数据
2、POST——用流的方式传递数据
Servlet是一个java程序,是在服务器端运行的以处理客户端请求并做出响应的程序。
Servlet类一定要继承HttpServlet,Servlet必须和Servlet容器配合运行,Servlet要嵌入容器才能运行。
Web应用程序的结构:
tomcat—webapps—appName:
http://ip:port/appName/index.jsp
1、页面和图片(可以自己组织结构,可以从客户端直接访问,jsp、html、js、jpg.....)
2、WEB-INF 目录(必须有的 其中的东西不能从客户端直接访问 )
a、web.xml (必须有 Web程序的总体配置,是一个核心)
b、classes文件夹(必须的 Servlet和JavaBean编译成Class后存放于该文件夹)
c、lib文件夹(存放该程序用的类库jar包)
Web .xml中要对Servlet进行一些配置
<Servlet>
<servlet-name>test</servlet-name>
<servlet-class>org.owl.servlets.TestServlet</servlet-class>
</Servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
JSP在运行时需要翻译成一个Servlet程序,然后再编译成Class文件,然后才可以运行。
Servlet的生命周期由Servlet容器来管理
Servlet的声明周期:
1、加载和实例化(构造方法): 在Web容器中查找用户请求的Servlet,如果没有找到,则实例化,如果找到,则加载。
2、初始化(init):在实例化后调用的方法,可以初始化一些资源。
3、服务(service): 接受请求并做出响应。根据请求的方式不同,调用doXXX方法。
4、销毁(destory): 主要用来销毁初始化时创建的资源,在destory方法中我们标识哪些资源可以回收,并不能马上回收。
如何获得请求参数?
1. request。getParameter(“name”);
2. 如果一个请求参数有多个值,需要返回一个数组!
String []size=request.getParameter(“name”);
For(int i=0;i<size.length;i++){
out.print(size[0]);
}
除了参数,还可以获得其他
1与请求相关的cookie Cookie [] cookies=request.getCookies();
2与会话相关的session Session session=request.getSession();
3请求的HTTP方法 String methed=request.getMethed();
初始化参数:
在web.xml中设置servlet初始化参数
<servlet>
<servlet-name> dbinit </servlet-name>
<servlet-class> strutsfinalcase.db.util.DBInit </servlet-class>
<init-param>
<param-name> driverClass </param-name>
<param-value> org.gjt.mm.mysql.Driver </param-value>
</init-param>
<servlet>
解释:容器初始化一个servlet时,会为这个servlet创建一个唯一的ServletConfig, 容器从DD读出servlet初始化参数,交给ServletConfig 然后转递给servlet的init()方法
在servlet 代码中获得初始化参数的值:
getServletConfig(),getInitParameter(“param-name”);
上下文初始化参数
<context-param>
<param-name>name</param-name>
<param-value>John</param-value>
</context-param>
在servlet 代码中获得上下文初始化参数的值:
getServletContext().getInitParameter(“name”);
ServletContext
用于在Web应用范围内存取共享数据的方法。
注:web应用范围具有以下两层含义:
(1) 表示有web应用的生命周期构成的时间段.
(2) 表示在web应用的生命周期内所有web组件的集合。
* setAttribute(String name,java.lang.Object object):把一个java对象和一个属性名绑定,并存放到ServletContext中,参数name指定属性名,参数Object表示共享数据。
* getAttribute(String name):根据参数给定的属性名,返回一个Object类型的对象。
* getAttributeNames():返回一个Enumeration对象,该对象包含了所有存放在ServletContext中的属性名。
* removeAttribute(String name):根据参数指定的属性名,从servletContext对象中删除匹配的属性。
访问当前Web应用的资源
* getContextpath():返回当前web应用的URL入口。
* getInitParameter(String name):返回web应用方位内的匹配的初始化参数值。在web.xml中<web-app>元素中<context-param>元素表示应用范围内的初始化参数。
* getInitParameterNames():返回一个Enumeration对象。
* getServletContextName():返回web应用的名字。即<web-app>元素中<display-name>元素的值。
* getRequestDispatcher(String path):返回一个用于向其他web组件转发请求的RequestDispatcher对象。
web.xml文件
web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等
1、指定欢迎页面,例如:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
PS:指定了2个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。
2、命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖命名的,命名必须在定制URL前。下面拿serlet来举例:
(1)、为Servlet命名:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
</servlet>
(2)、为Servlet定制URL、
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3、定制初始化参数:可以定制servlet、JSP、Context的初始化参数,然后可以再servlet、JSP、Context中获取这些参数值。
下面用servlet来举例:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>Daniel</param-value>
</init-param>
<init-param>
<param-name>E-mail</param-name>
<param-value>125485762@qq.com</param-value>
</init-param>
</servlet>
经过上面的配置,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值。
4、指定错误处理页面,可以通过“异常类型”或“错误码”来指定错误处理页面。
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
-----------------------------
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>
5、设置过滤器:比如设置一个编码过滤器,过滤所有资源
<filter>
<filter-name>XXXCharaSetFilter</filter-name>
<filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXCharaSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6、设置监听器:
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
|
|