Java基础之《Servlet+JSP(JavaEE开发进阶Ⅰ)》--Servlet ⼀、Web简介
1、http请求
GET请求:请求获取由Request-URI所标识的资源
POST请求:向指定Request-URI所标识的资源提交数据进⾏处理请求
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
浏览器打开⼀个页⾯:⽐如www.baidu
2、http常⽤状态码javaservlet和jsp的比较
1)消息(1xx):代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态⾏和某些可选的响应头信息,并以空⾏结束(HTTP1.0不⽀持)
2)成功(2xx):代表请求已成功被服务器接收、理解、并接受(200请求已成功)
3)重定向(3xx):代表需要客户端采取进⼀步的操作才能完成请求。通常,这些状态码⽤来重定向,后续的请求地址(重定向⽬标)在本次响应的Location域中指明
4)请求错误(4xx):客户端看起来可能发⽣了错误,妨碍了服务器的处理(404请求的资源不存在)
5)服务器错误(5xx):服务器在处理请求的过程中有错误或者异常(500为服务端的源代码出现错误)
⼆、Servlet基础
1)客户端(浏览器)发送http请求给服务器(tomcat)
2)服务器将请求封装成request对象
3)当tomcat得到信息后会调⽤对应的servlet
4)在调⽤对应⽅法的时候就会把request对象传过去
Web Components:Web组件
JavaBeans Components:JavaBeans组件
3、Servlet介绍
3.1、Java Servlet(server applet)
服务端的⼩程序
3.2、Java Servlet继承结构
1)Servlet接⼝(javax.servlet.Servlet)
init⽅法、service⽅法、destroy⽅法
2)GenericServlet(javax.servlet.GenericServlet)
对servlet接⼝的通⽤实现
3)HttpServlet(javax.servlet.http.HttpServlet)
⽤于http的servlet接⼝实现类
3.3、创建⼀个Servlet过程
继承HttpServlet类
重写service(或doGet、doPost)⽅法
在l中配置Servlet
4、创建和部署Web应⽤
4.1、Web Project⽬录结构
⼀般是:将Web应⽤导出war包,拷贝到webapps⽬录,重启tomcat 三、Servlet⽣命周期
1、Servlet API
1.1、Servlet介绍
Servlet是java服务运⽤的⼩程序,由Servlet容器进⾏管理
1.2、Servlet关联的类
javax.servlet.Servlet
javax.servlet.ServletConfig
javax.servlet.IOException
javax.servlet.ServletException
javax.servlet.ServletRequest
javax.servlet.ServletResponse
1.3、Servlet常⽤⽅法
destory()
getServletConfig()
getServletInfo()
init(javax.servlet.ServletConfig)
service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
2、HttpServlet
HttpServlet是基于HTTP协议的Servlet实现。⽤户创建Servlet⼀般继承HttpServlet
2.1、HttpServlet继承关系
如果⼀个应⽤Servlet类特别多,有些Servlet很长时间未调⽤,可以把Servlet实例序列化写到磁盘保存,后⾯要⽤的化再反序列化
2.2、GenericServlet常⽤⽅法
destory()
getServletConfig()
getServletInfo()
init(javax.servlet.ServletConfig)
service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
getInitParameter(java.lang.String) //获取l中配置的键值对
getInitParameterNames()
getServletContext() //Servlet上下⽂,这个上下⽂实例在整个web应⽤⾥是全局共享的
getServletName()
init()
log(java.lang.String, java.lang.Throwable)
log(java.lang.String, java.lang.Throwable)
log(java.lang.String)
2.3、HttpServlet常⽤⽅法
doDelete(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doOptions(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doPut(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
doTrace(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
重写doGet、doPost,或者service⽅法
在servlet中默认情况下,⽆论你是get还是post提交过来都会经过service()⽅法来处理,然后转向到doGet或是doPost⽅法如果重写了service⽅法,那么get和post请求都执⾏重写的业务逻辑
3、Servlet⽣命周期
Java Web Server端的运⽤都是围绕着Servlet展开
Servlet⽣命周期需要结合Servlet接⼝中定义的⽅法来了解Servlet的加载、创建、服务及销毁的过程
3.1、Servlet⽣命周期演⽰
创建Servlet
配置Servlet
启动tomcat
观察
1)⼀个servlet就要配置⼀个<servlet></servlet>标签
2)load-on-startup标签:
表⽰servlet被加载的时间点,越⼩越前⾯加载
不加这个标签默认值-1,⼩于0的数表⽰servlet被使⽤的时候加载
如果值为0表⽰,在应⽤程序部署后就⽴马加载servlet类并且实例化它
值⼤于0的情况下,是按照int型⼤⼩顺序加载
可以看到在tomcat启动的时候就实例化了Servlet2类,init⽅法被调⽤
3)init初始化⽅法只调⽤⼀次
4)初始化后,以后每次访问都会调⽤service⽅法
5)servlct销毁,在servlet对象重新创建(web应⽤重新加载)或服务器停⽌时销毁
3.2、初始化参数标签
以键值对的形式,为servlet提供常量值
<init-param>
<param-name>test</param-name>
<param-vlaue>123456</param-value>
</init-param>
获取初始化参数在init⽅法⾥直接从ServletConfig对象⾥取
在不带参数的init⽅法⾥⽤getInitParameter()⽅法获取
4、处理Servlet⽣命周期事件
在Servlet⽣命周期过程中涉及到其它相关对象创建、销毁或者更改其它对象的属性时提供对应的回调接⼝来实现特定的功能通过Servlet⽣命周期中其它对象提供的回调接⼝来实现⼀些功能
所有Servlet⽣命周期中的对象,都是由Servlet容器创建和销毁
四、Servlet表单处理
<form action="other" method="POST">
<input type="hidden" name="hidden" value="test"> <!-- 隐藏属性 -->
性别:<input type="radio" name="gender" value="男" checked="true">男
<input type="radio" name="gender" value="男">⼥<br/> <!-- 单选 -->
课程:<input type="checkbox" name="course" value="C">C <!-- 多选 -->
<input type="checkbox" name="course" value="Java">Java
<input type="checkbox" name="course" value="JavaEE">JavaEE<br/>
城市:<select name="city"> <!-- 下拉框 -->
<option value="上海">上海</option>
<option value="北京">北京</option>
<option value="宜昌">宜昌</option>
</select><br/>
<input type="reset" value="取消">
<input type="submit" value="提交">
</form>
获取Request中的其他信息例⼦程序:
3、RequestDispatcher
请求转发
是由Servlet容器创建的⼀个Web资源的包装器,可以⽤来把当前的request传递到该资源,或者把新的资源包括到当前响应中
3.1、⽅法
1)void forward(ServletRequest request, ServletResponse response)
五、会话跟踪
Cookie c1 = new Cookie("test1", "test1 cookie");
resp.addCookie(c1);  //默认路径为webapp路径
Cookie c2 = new Cookie("test2", "test2 cookie");
c2.setPath("/");  //servlet服务器的路径
resp.addCookie(c2);
Cookie c3 = new Cookie("test3", "test3 cookie");
c3.setPath("/temp/");
resp.addCookie(c3);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。