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的属性。

原创粉丝点击