Servlet入门
Posted 丰柏林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet入门相关的知识,希望对你有一定的参考价值。
1.Servlet介绍
servlet是Java服务运用的小程序,由Servlet容器进行管理,Tomcat,多线程(减少了内存的消耗,但是共享字段不加锁不安全)
servlet关联的类(ServletConfig,IOException,ServletException,String,ServletResponse,ServletRequest)
2.Servlet常用方法
destory()
getServletConfig()
getServletInfo()
init(javax.servlet.ServletConfig)
service(javax.servlet.ServletRequest,javax.servlet.ServletResponse)
3.HttpServlet是基于HTTP协议的Servlet实现。用户创建Servlet一般继承HttpServlet
Servlet的配置 ,在web.xml里面配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ServletLifecycle</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>com.iotek.jee.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/s1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet2</servlet-name>
<servlet-class>com.iotek.jee.servlet.Servlet2</servlet-class>
//默认是-1 ,只有在被使用的时候才会被加载,如果是0就会提前加载。如果大于0按由小到大的来加载。
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Servlet2</servlet-name>
<url-pattern>/s2</url-pattern>
</servlet-mapping>
</web-app>
在多个线程里面,访问的都是同一个实例,所以要加锁。
销毁方法只有在线程停止或者Tomcat停止的时候才会被调用
System.out.println("init-param:" + config.getInitParameter("test"));
init初始化方法,在servlet被创建之后调用,而且只会被调用一次。
service方法,访问多次调用多次。
destory方法,最后调用一次
servlet生命周期
ServletContainer
ServletContext
ServletContextListener
Servlet2
WebContextListener 监听,一个项目只有一个监听。
servletContext在线程创建之前先被创建,在线程销毁之后才会调用销毁方法。
HttpServletRequest
HttpServletRequest是继承ServletRequest、并基于HTTP协议提供对用户请求信息进行统一封装的借口。一般由Servlet容器的提供者实现。
HttpServletRequest生命周期
一个HttpServletRequest对象在用户向web服务器发送请求时,servlet容器创建,并根据相关信息(请求头,请求主体)对其进行封装,然后传递给HTTPServletRequest的使用者(通常是Servlet)
一个HttpServletRequest对象,只存在于servlet容器里面
在服务器响应客户后HttpServletRequest对象被销毁
ServletRequest常用方法介绍
String getCharacterEncoding() 返回此请求正文中使用的字符编码的名称。
setCharacterEncoding(String s) 重写此请求正文中使用的字符编码的名称
String getContentType() 返回请求正文的MIME类型,如果该类型未知,则返回null
ServletInputStream getInputStream() 以二进制数据形式获取请求正文
String getParameter(String name) 以String形式返回请求参数的值,如果该值不存在,则返回null
String[] getParameterValues(String name) 返回包含给定请求参数拥有的所有值的String对象数组
RequestDispatcher getRequestDispatcher(String s) 返回一个RequestDispatcher对象。如果改路径以"/"开头,那么可以相当于当前上下文
int getContentLength() 返回请求正文的长度(以字节为单位),如果长度未知,则返回-1。对于HttpServlet,返回的值与CGI变量CONTENT_LENGTH的值相同
Object getAttribute(String name) 以Object形式返回指定属性的值,如果不存在给定名称的属性,则返回NULL。
EnumerationgetAttributeNames() 返回包含此请求可用属性的名称的Enumeration。如果该请求没有可用的属性,则此方法会返回一个空的Enumeration。
Cookie[] getCookies() 返回包含客户端碎词请求一起发送的所有Cookie对象的数组
String getContextPath() 返回请求URL指示请求上下文的那一部分。请求URL中首先出现的总是上下文路径。
HttpSession getSession() 返回与此请求关联的当前会话,如果该请求没有会话,则创建一个会话。
HttpSession getSession(boolean flag) 返回与此请求关联的当前HttpSession,如果没有当前会话并且create为true,则返回一个新会话。
String getRequestURI() 返回此请求URL的一部分,从协议名称一直到http请求的第一行中的查询字符串
String getMethod() 返回用于发出此请求的HTTP方法的名称。
String getQueryString() 返回包含在请求URL中路径后面的查询字符串
String getHeadr(String s) 以String的形式返回指定请求头的值
Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举
boolean isRequestedSessionIdValid() 检查请求的会话ID是否仍然有效
boolean isRequestedSessionIdFromCookie() 检查请求的会话ID是否是作为cookie进入的
boolean isRequestedSessionIdFromURL() 检查请求的会话ID是否作为请求URL的一部分进入的
以上是关于Servlet入门的主要内容,如果未能解决你的问题,请参考以下文章