Java Web应用程序中,处理请求并发送响应的过程是由一种叫做Servlet的程序来完成的。
一、Servlet工作流程
浏览器提交的请求是遵循HTTP协议的文本。这段文本由服务器(Tomcat)接收并解析,封装成HttpServletRequest类型的request对象。所有的Http头数据都可以通过request相应的方法查询到。
Tomcat同时把输出流封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制输出的内容。然后,Tomcat把request、response作为参数,调用Servelt方法,例如:doPost、doGet方法。
二、一个完整的Servlet包括Servlet类、<servlet>配置、<servlet-mapping>配置。
三、web.xml文件中ContextParam
如果需要配置一个所有Servlet都能够读取的参数,就需要用到上下文参数(ContextParam),或者叫文档参数。
四、Sevlet生命周期
加载(类)-->实例化(new 对象)-->初始化(init方法初始化)-->处理请求-->退出服务。
Servlet只有一个对象。
注意:多个客户端并发请求Servlet时,服务器会启动多个线程分别执行该Servlet的service()方法。Servlet不是线程安全的,解决的办法是尽量不要定义成员变量,而是把变量定义到doPost和doGet方法中去。
五、Servlet和Jsp
Servlet 是先由源代码便也为class文件后部署到服务器,先编译后部署,而JSP则是先部署源代码后编译为Class文件,先部署后编译。
六、Java Bean就是普通的Java类,也被称为POJO.(普通的java对象,Plain Ordinary Java Object)
七、Jsp编程-基本语法
1、Jsp传统语法
1)声明<!% ....%> 在此声明的变量是全局变量,可以声明方法,但在<%....%>在此声明的变量是局部变量,并且不能定义方法,原因可看JSP编译之后的java代码文件。
2)<%....%>程序代码区
3)<%=....%> "="后跟字符串变量或可以转换成字符串的表达式。
4)Directive 相当于在编译期间的命令
常见的是:page、include、taglib
格式如:
<%@page import="java.util.*"%>
5)Action(动作指令)
<jsp:include ..../><jsp:useBean ..../>....
2、JSTL :标签化的语言
3、JSF:
八、forward 和 sendRedirect
forward :使用的是同一个request,地址栏URL不变,内部转发。
sendRedirect:是不同的request,地址栏URL变化,重新请求。
九、EL表达式
JSP中可以使用EL表达式。EL表达式是用“${}”括起来的脚本,用来方便的读取对象。它写在JSP的HTML代码中,而不能写在<%....%>引起的JSP脚本中。
十、Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据就需要建立新的连接。这就意味着服务器无法从连接上跟踪对话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪会话必须引用一种机制。
cookie、session和application(ServletContext)。
cookie 在客户端保存状态,session在服务器端保存状态。
cookie包含<名,值>,域,路径(cookie的作用范围),过期时间(设置了,cookie保存在本地的硬盘上,在各浏览器进程间可共享;无设置,则该cookie在浏览器进程存在时有效,关闭时销毁)
session,服务器用一种散列表类型的结构存储信息,当一个连接建立的时候,服务器首先搜索有没有sessionId,没有,建立一个新的session,将sessionId返回给客户端,客户端可以选择Cookie来存储sessionId,也可用其他方法,如服务器端将sessionId附在URL上。session跟浏览器窗口一一对应(包含子窗口)
session多了,会影响服务器性能。
ServletContext是服务器上公用的。
一、Servlet工作流程
浏览器提交的请求是遵循HTTP协议的文本。这段文本由服务器(Tomcat)接收并解析,封装成HttpServletRequest类型的request对象。所有的Http头数据都可以通过request相应的方法查询到。
Tomcat同时把输出流封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制输出的内容。然后,Tomcat把request、response作为参数,调用Servelt方法,例如:doPost、doGet方法。
二、一个完整的Servlet包括Servlet类、<servlet>配置、<servlet-mapping>配置。
三、web.xml文件中ContextParam
如果需要配置一个所有Servlet都能够读取的参数,就需要用到上下文参数(ContextParam),或者叫文档参数。
四、Sevlet生命周期
加载(类)-->实例化(new 对象)-->初始化(init方法初始化)-->处理请求-->退出服务。
Servlet只有一个对象。
注意:多个客户端并发请求Servlet时,服务器会启动多个线程分别执行该Servlet的service()方法。Servlet不是线程安全的,解决的办法是尽量不要定义成员变量,而是把变量定义到doPost和doGet方法中去。
五、Servlet和Jsp
Servlet 是先由源代码便也为class文件后部署到服务器,先编译后部署,而JSP则是先部署源代码后编译为Class文件,先部署后编译。
六、Java Bean就是普通的Java类,也被称为POJO.(普通的java对象,Plain Ordinary Java Object)
七、Jsp编程-基本语法
1、Jsp传统语法
1)声明<!% ....%> 在此声明的变量是全局变量,可以声明方法,但在<%....%>在此声明的变量是局部变量,并且不能定义方法,原因可看JSP编译之后的java代码文件。
2)<%....%>程序代码区
3)<%=....%> "="后跟字符串变量或可以转换成字符串的表达式。
4)Directive 相当于在编译期间的命令
常见的是:page、include、taglib
格式如:
<%@page import="java.util.*"%>
5)Action(动作指令)
<jsp:include ..../><jsp:useBean ..../>....
2、JSTL :标签化的语言
3、JSF:
八、forward 和 sendRedirect
forward :使用的是同一个request,地址栏URL不变,内部转发。
sendRedirect:是不同的request,地址栏URL变化,重新请求。
九、EL表达式
JSP中可以使用EL表达式。EL表达式是用“${}”括起来的脚本,用来方便的读取对象。它写在JSP的HTML代码中,而不能写在<%....%>引起的JSP脚本中。
十、Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据就需要建立新的连接。这就意味着服务器无法从连接上跟踪对话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪会话必须引用一种机制。
cookie、session和application(ServletContext)。
cookie 在客户端保存状态,session在服务器端保存状态。
cookie包含<名,值>,域,路径(cookie的作用范围),过期时间(设置了,cookie保存在本地的硬盘上,在各浏览器进程间可共享;无设置,则该cookie在浏览器进程存在时有效,关闭时销毁)
session,服务器用一种散列表类型的结构存储信息,当一个连接建立的时候,服务器首先搜索有没有sessionId,没有,建立一个新的session,将sessionId返回给客户端,客户端可以选择Cookie来存储sessionId,也可用其他方法,如服务器端将sessionId附在URL上。session跟浏览器窗口一一对应(包含子窗口)
session多了,会影响服务器性能。
ServletContext是服务器上公用的。