Java学习大全 之 Servlet
来源:互联网 发布:毕鑫业 知乎 编辑:程序博客网 时间:2024/05/22 02:04
1、servlet(java小程序):是用java编写的服务器端的程序。由服务器调用和执行的。
工作模式:
一、客户端发送请求至服务器
二、服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
三、服务器将响应返回客户端
2、servlet生命周期(简单来就算是:创建,初始化,服务,销毁,不可用)
一、创建。加载servlet,一般是动态的,实例化一个servlet。
二、初始化。servlet容器调用init()方法。
三、服务。如果容器收到servlet的请求,那么它就调用servlet的service()方法。
四、销毁。实例化销毁之前调用destory()方法。
五、不可用。销毁实例并标记为垃圾收集。
3、相关接口和类
Servlet接口:所有servlet程序必须直接或者间接实现的接口
init(ServletConfig config)用来初始化
destory()用来销毁
getServletInfo()用来获得servlet实例的信息
getServletConfig()获得servlet配置相关信息
service(ServletResquest request, ServletResponse response)运行应用程序逻辑的入口点。
GenericServlet抽象类:有个类service方法是抽象的。这个类是粗粒度的servlet
HttpServlet抽象类:是针对使用HTTP协议web服务器的Servlet类。HttpServlet类通过执行Servlet接口,能够提供http协议功能。
doGet 用于处理http get请求。最大url长度1k
doPost 用于处理http post请求。数据大小没有限制,事实上tomcat默认给其限制为2M。
doPut 用于处理http put请求
doDelete 用于处理http delete请求
4、servlet配置
一、servlet映射
<servlet>
<description>本servlet的描述,可以要可以不要</description>
<servlet-name>HttpServlet1</servlet-name>
<servlet-class>servlet.TestHttpServlet</servlet-class><!--指明该servlet的处理的类-->
<init-param><!--初始化参数1-->
<param-name>name</param-name>
<param-value>joe</param-value>
</init-param>
<init-param><!--初始化参数1-->
<param-name>password</param-name>
<param-value>332</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpServlet1</servlet-name><!--跟上面servlet-name元素值一样,用来对应-->
<url-pattern>/testHttpServlet</url-pattern><!--定义访问这个servlet的url-->
</servlet-mapping>
二、上下文参数
<context-param>
<description>参数的描述,可以要可以不要</description>
<param-name>param1</param-name>
<param-value>paramval</param-value>
</context-param>
三、图标:写在web.xml文件的全局地方
<icon>
<!-- web应用的小图标 -->
<small-icon>/image/small.gif</small-icon>
<!-- web应用的大图标 -->
<large-icon>/image/large.gif</large-icon>
</icon>
四、过滤器:用于对servlet请求的过滤。例如对所有servlet请求进行编码设置。
<filter>
<description>过滤器的描述,可选的</description>
<filter-name>encoding</filter-name>
<filter-class>tool.Encoding</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/servlet</url-pattern><!-- 要拦截的servlet,如果要拦截所有则为/* -->
</filter-mapping>
五、监听器
<listener>
<description>监听器描述</description>
<!-- 监听器类。监听服务器启动和停止,执行一定的操作 -->
<listener-class>listener.MyListener</listener-class>
</listener>
六、 指定欢迎文件
<welcome-file-list>
<!--按顺序为优先级,如果找不到第一个那么找第二个,依次类推。不能有servlet的action-->
<welcome-file>index.jsp</welcome-file>
<welcome-file>index2.jsp</welcome-file>
</welcome-file-list>
七、session配置
<!--设置所有session的超时连接时间,单位为分钟。如果为0那么就没有时间限制-->
< session-config >
< session-timeout >30</ session-timeout >
</ session-config >
八、引入tld
<taglib>
<taglib-uri>/mytaglib</taglib-uri>
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
5、请求和响应
javax.servlet包的接口为:
ServletConfig接口 :在初始化过程中由Servlet容器使用
ServletContext接口:定义Servlet用于获取容器信息的方法
ServletRequest接口:向服务器请求信息
ServletResponse接口: 响应客户端请求
javax.servlet.http包的接口为:
HttpServletRequest接口 :提供http请求
getCookies()获得客户端发送的Cookie。返回数组,如果没有Cookie则返回null。
getSession()返回客户端关联的Session。如果没有则返回null。
getSession(boolean create)如果没有给客户分配Session则创建一个新的Session
getParameter(java.lang.String name)获得请求中名字为name的参数值。如果没有参数则返回null。
getParameterValues(java.lang.String name)获得请求中名字为name的参数所有值,用数组装起来的。一般这些值是从ckeckbox或者select控件提交而来的。
getRequestDispatcher(java.lang.String path).forward(ServletRequest request, ServletResponse response);服务端跳转(把本请求和响应对象传递过去)。
getRequestDispatcher(java.lang.String path).input(ServletRequest request, ServletResponse response);服务端跳转(把其他请求和其他响应传递过去)。
HttpServletResponse接口 :提供http响应
addCookies(Cookie cookie)在响应中增加一个Cookie。
encodeURL(java.lang.String url)使用url和一个会话id重写url。
sendRedirect(java.lang.String location)把响应发送到另一个页面或者servlet进行处理。(客户端跳转,客户端的地址栏会变)。
setContentType(java.lang.String type)设置响应的mime类型。
setCharacterEncoding(java.lang.string charset)设置响应的字符编码类型。
6、会话
HttpSession:接口用于标识客户端并存储有关客户信息。
getId()返回字符串型的会话id。
getCreationTime()返回会话创建的时间(midnight Jnuary 1, 1970 GMT 开始到创建时总秒数)。
getServletContext()返回ServletContext。
getLastAccessedTime()返回客户端最后一次发出与本session有关的请求的时间。如果session是新建的则返回-1。
setMaxInactiveInterval(int interval)设置一个秒数,表示客户端不发送请求时Session被servlet引擎维持的时长。
getMaxInactiveInterval()返回客户端不发送请求时session所存在多长时间(单位为秒数),如果session是永久的则返回-1。
getValue(String name)返回一个给定名字的已经绑定到Session上的对象的值。(已经过时的方法已经被session属性相关方法代替,了解即可)
getValueNames()返回绑定到Session上的所有数据的名字。用数组装起来。(已经过时的方法已经被session属性相关方法代替,了解即可)
isNew()返回一个布尔值表示本Session是不是新建的。
putValue(String name,Object value)给定名字绑定某对象给Session。如Session已经有该绑定的名字则重置其值。(已经过时的方法已经被session属性相关方法代替,了解即可)
removeValue(String name)取消名字为name的绑定到Session的对象。(已经过时的方法已经被session属性相关方法代替,了解即可)
setAttribute(java.lang.String name, Object value)增加一个属性并且带有值。
getAttribute(java.lang.String name)根据指定名字属性获得属性值。
getAttributeNames()获得属性名数组。
removeAttribute(java.lang.String name)移除名字为name的属性。
- Java学习大全 之 Servlet
- JAVA学习之Servlet
- Java学习之Servlet
- JAVA学习之 浅析Servlet
- java学习之Servlet Filter
- java web学习之servlet
- JAVA之Servlet的学习
- Java学习大全 之-- CoreJava
- Java学习大全 之 JDBC
- Java学习大全 之 JSP
- Java学习大全 之 Struts1
- Java学习大全 之 Struts2
- java servlet学习之监听器类
- java servlet学习之监听器类
- java系统学习之servlet初识
- Java学习之Servlet原理(收集)
- java servlet学习之监听器类
- JAVA Web学习之servlet开发
- Java学习大全 之 JSP
- 冲突域广播域
- Glib库的安装和编译
- Hibernate之inverse与cascade的使用
- linux start anlysis
- Java学习大全 之 Servlet
- Java学习大全 之 Struts1
- 递归生成全排列(常规)
- Flex中ByteArray与BitmapData互相转换实现图片的二进制保存与复原
- 应遵循的PL/SQL编码规则
- Hibernate之inverse与cascade的使用(2)
- Java小对象的解决之道——对象池(Object Pool)的设计与应用
- 编辑sqlplus命令
- php 通过文件传数组