1: Web程序开发大约分4个层次
1)表现层-----------------------JSP,Servlet,Ajax...
2)控制层-----------------------Servlet,struts,springMVC...
3)业务逻辑层-------------------Spring...
4)数据存储层-------------------Hibernate...
1)表现层-----------------------JSP,Servlet,Ajax...
2)控制层-----------------------Servlet,struts,springMVC...
3)业务逻辑层-------------------Spring...
4)数据存储层-------------------Hibernate...
2: IOC/DI(控制反转和依赖注入)
就是把实例化哪个类的控制权由程序转移到配置文件中,代码中只写接口和传入配置名字的id的工厂方法,程序运行的时候,根据配置信息,把所配的类通过反射注入到程序中
就是把实例化哪个类的控制权由程序转移到配置文件中,代码中只写接口和传入配置名字的id的工厂方法,程序运行的时候,根据配置信息,把所配的类通过反射注入到程序中
。
SomeInterface si = new SomeInterfaceImpl();
改为:
SomeInterface si = applicationContext.getBean("yourConfigClassid");
SomeInterface si = new SomeInterfaceImpl();
改为:
SomeInterface si = applicationContext.getBean("yourConfigClassid");
3: AOP(后期总结)
4: 数据存储层两个概念(后期总结)
DAO
ORMapping
DAO
ORMapping
5: 在servlet的配置当中,<load-on-startup>的含义
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet。
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
6: ServletConfig
相对于ServletContext,ServletConfig是针对特定的Servlet的参数或属性。ServletConfig是表示单独的Servlet的配置和参数,只是适用于特定的Servlet。
<web-app>
<servlet>
<servlet-name>GetAtt</servlet-name>
<servlet-class>mail.GetAttServlet</servlet-class>
<init-param>
<param-name>absPath</param-name>
<param-value>/usr/mail/ax/axman/Maildir/</param-value>
</init-param>
</servlet>
</web-app>
要取得ServletConfig对象:
1).从init()方法中得到.
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
2).从getServletConfig()方法中得到.
ServletConfig config=this.getServletConfig();
if(config.getInitParameter("absPath").eaquals("adsd")
{
.......
}
{
.......
}
7: ServletContext
对于web容器来说,ServletContext接口定义了一个servlet环境对象,其内提供的方法可以在同一web应用下的所有servlet中被使用。
对于web容器来说,ServletContext接口定义了一个servlet环境对象,其内提供的方法可以在同一web应用下的所有servlet中被使用。
一般来说,对整个应用的配置,为了不使用“硬编码”,应该配置为ServletContext参数,比如字符集设定。
<web-app>
.................
< context-param>
<param-name>charset</param-name>
<param-value>GB2312</param-value>
</ context-param>
.................
</web-app>
要访问ServletContext对象,只要从现有的ServletConfig对象getServletContext()就可以了,然后调用它的getInitParameter()方法就可以获取它的参数。或
<web-app>
.................
< context-param>
<param-name>charset</param-name>
<param-value>GB2312</param-value>
</ context-param>
.................
</web-app>
要访问ServletContext对象,只要从现有的ServletConfig对象getServletContext()就可以了,然后调用它的getInitParameter()方法就可以获取它的参数。或
getServletContext()。
8: getRequestDispatcher()与sendRedirect()区别
1).request.getRequestDispatcher()是请求转发,前后页面共享一个request(IE地址栏地址是不变的) ;
response.sendRedirect()是重新定向,前后页面不是一个request。
response.sendRedirect()是重新定向,前后页面不是一个request。
2).RequestDispatcher.forward()是在服务器端运行;
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;而HttpServletResponse.sendRedirect()则不是。
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;而HttpServletResponse.sendRedirect()则不是。
3).ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径; 而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。因为
ServletRequest具有相对路径的概念;而ServletContext对象无次概念。
4).RequestDispatcher对象从客户端获取请求request,并把它们传递给服务器上的servlet,html或jsp。它有两个方法:
void forward(ServletRequest request,ServletResponse response)
用来传递request的,可以一个Servlet接收request请求,另一个Servlet用这个request请 求来产生response。request传递的请求,response是客户端返回的信息。
forward要在response到达客户端之前调用,也 就是 before response body output has been flushed。如果不是的话,它会报出异常。
void include(ServletRequest request,ServletResponse response)
用来记录保留request和response,以后不能再修改response里表示状态的信息。
5).使用方法
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/jsp/login_result.jsp");
dispatcher.forward(request, response);
5).使用方法
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/jsp/login_result.jsp");
dispatcher.forward(request, response);
9: JSP的九个隐含对象
1).page 对象
page对象代表JSP本身,更准确地说它代表JSP被转译后的Servlet,它可以调用Servlet类所定义的方法。
2).config 对象
config 对象里存放着一些Servlet 初始的数据结构。
config 对象实现于javax.servlet.ServletConfig 接口。
page对象代表JSP本身,更准确地说它代表JSP被转译后的Servlet,它可以调用Servlet类所定义的方法。
2).config 对象
config 对象里存放着一些Servlet 初始的数据结构。
config 对象实现于javax.servlet.ServletConfig 接口。
3).request 对象
request 对象包含所有请求的信息,如:请求的来源、标头、cookies和请求相关的参数值等等。
request 对象实现javax.servlet.http.HttpServletRequest接口的。
request 对象包含所有请求的信息,如:请求的来源、标头、cookies和请求相关的参数值等等。
request 对象实现javax.servlet.http.HttpServletRequest接口的。
4).response 对象
response 对象主要将JSP 处理数据后的结果传回到客户端。
response 对象是实现javax.servlet.http.HttpServletResponse 接口。
response 对象主要将JSP 处理数据后的结果传回到客户端。
response 对象是实现javax.servlet.http.HttpServletResponse 接口。
5).out 对象
out 对象能把结果输出到网页上。
out主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream)。
6).session 对象
session对象表示目前个别用户的会话(session)状况。
session对象实现javax.servlet.http.HttpSession接口。
out 对象能把结果输出到网页上。
out主要是用来控制管理输出的缓冲区(buffer)和输出流(output stream)。
6).session 对象
session对象表示目前个别用户的会话(session)状况。
session对象实现javax.servlet.http.HttpSession接口。
7).application对象
application对象最常被使用在存取环境的信息。
因为环境的信息通常都储存在ServletContext中,所以常利用application对象来存取ServletContext中的信息。
application 对象实现javax.servlet.ServletContext 接口。
application对象最常被使用在存取环境的信息。
因为环境的信息通常都储存在ServletContext中,所以常利用application对象来存取ServletContext中的信息。
application 对象实现javax.servlet.ServletContext 接口。
8).pageContext对象
pageContext对象能够存取其他隐含对象。
pageContext对象能够存取其他隐含对象。
9).exception对象
若要使用exception 对象时,必须在page 指令中设定。才能使用。
exception提供的三个方法:
getMessage( )
getLocalizedMessage( )、
printStackTrace(new java.io.PrintWriter(out))
若要使用exception 对象时,必须在page 指令中设定。才能使用。
exception提供的三个方法:
getMessage( )
getLocalizedMessage( )、
printStackTrace(new java.io.PrintWriter(out))
10: 四大范围
·page范围
page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除。
·request范围
请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象。
·session范围
JSP容器为每一次会话(浏览器关闭为一次会话结束),创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。
·application范围
在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。