Servlet程序开发详细整理知识点考点.docx
- 文档编号:10491328
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:30
- 大小:24.39KB
Servlet程序开发详细整理知识点考点.docx
《Servlet程序开发详细整理知识点考点.docx》由会员分享,可在线阅读,更多相关《Servlet程序开发详细整理知识点考点.docx(30页珍藏版)》请在冰豆网上搜索。
Servlet程序开发详细整理知识点考点
Servlet
1、Servlet简介
1、Servlet:
使用Java语言编写的服务端小程序,可以像JSP一样,生成动态的WEB网页。
主要运行在服务器端,并由服务器调用执行,是一种按照Servlet标准开发的类。
采用多线程的处理方式,具有可移植性,功能强大。
2、Servlet处理的基本流程:
(1)、客户端(很可能是Web浏览器)通过HTTP提出请求
(2)、WEB服务器接收该请求并将其发送给Servlet。
如果这个servlet尚未被加载,web服务器将把它加载到Java虚拟机并且执行它。
(3)、Servlet程序将接收该HTTP请求并执行到某种处理。
(4)、Servlet会将处理后的结果向Web服务器返回应答。
(5)、WEB服务器将从Servlet接收到的应答发回给客户端。
3、要想在程序中实现一个Servlet的话,必须继承HttpServlet类。
4、Servlet接口-->GenericServlet子类-->HttpServlet子类-->自定义Servlet
2、Servlet程序
1、Servlet继承HttpServlet类,覆写doGet()方法。
packageorg.lxh.servletdemo;//将.class文件放入包中
importjava.io.*;//将基本包写在扩展包前(javax为扩展包)
importjavax.servlet.*;
importjavax.servlet.http.*;//将子包写在父包之后
publicclassHelloServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
PrintWriterout=resp.getWriter();
out.println("");
out.println("
out.println("
");out.println("
HELLOWORLD
");out.println("");
out.println("");
out.close();
}
}
2、每个Servlet都必须通过web.xml文件进行映射的路径指定(在编译好的情况下)。
3、在浏览器中输入helloServlet就可以进行Servlet程序的访问了;但是,此时的Tomcat必须重新启动后以加载新的配置。
http:
//localhost/mdln/helloServlet
4、一个servlet可以映射多个名称,尤其是“*”这个路径,可以表示任意的名称。
3、Servlet与表单
1、InputServlet.java
packageorg.lxh.servletdemo;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassInputServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
Stringinfo=req.getParameter("info");//假设参数名称为info
PrintWriterout=resp.getWriter();
out.println("");
out.println("
out.println("
");out.println("
"+info+"
");out.println("");
out.println("");
out.close();
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
this.doGet(req,resp);
}
}
2、Input.html
请输入内容:
HTTP的提交方法,用的最多的是doGet()和doPost()。
4、Servlet生命周期
1、生命周期:
一个程序的存在周期,Servelet受容器的管理,所以容器来决定其生命周期。
2、Servlet生命周期:
加载程序、初始化、服务、销毁、卸载
3、Servlet生命周期对应的方法:
(1)Publicvoidinit()throwsServletException------Servlet初始化时调用
(2)Publicvoidinit(ServletConfigconfig)throwsServletException
------Servlet初始化时调用,通过ServletConfig读取配置信息
(3)Publicabstractvoidservice(ServletRequestreq.ServletResponseres)throwsServletException,IOException------Servlet服务,一般不会直接覆写此方法,而是使用doGet()或doPost()方法
(4)publicvoiddestroy()------Servlet销毁时调用
4、程序
packageorg.lxh.servletdemo;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassLifeCycleServletextendsHttpServlet{
publicvoidinit()throwsServletException{
System.out.println("**1、Servlet初始化-->init()");
}
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("**2、Servlet服务-->doGet()、doPost()");
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
this.doGet(req,resp);
}
publicvoiddestroy(){
System.out.println("**3、Servlet销毁-->destory()");
try{
Thread.sleep(3000);
}catch(Exceptione){}
}/*
publicvoidservice(ServletRequestreq,
ServletResponseres)
throwsServletException,
IOException{
System.out.println("************服务**************");
}
*/
5、Servlet程序在第一次运行的时候才会初始化。
6、销毁的三种情况:
(1)容器关闭
(2)一个Servlet长时间不使用(3)执行了reload操作
7、如果程序中覆写了services()方法,则doGet()和doPost()无效;services()方法的主要功能是区分get请求和post请求,如果是get请求则调用doGet()方法,如果是post请求则调用doPost()方法;但是如果在子类中被覆写后,就没有了此种区分能力,doGet()和doPost()方法就失效了。
8、如果希望容器启动时servlet直接进行初始化,可以在web.xml中添加相应的配置。
5、取得初始化配置信息
1、初始化方法为init(),里面可以传入ServletConfig的对象,此对象可以接收初始化配置参数。
所有的初始化参数必须在web.xml文件中进行配置。
2、程序
packageorg.lxh.servletdemo;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassInitParamServletextendsHttpServlet{
privateStringinitParam=null;//用于保存初始化参数
publicvoidinit()throwsServletException{
System.out.println("*****************");
}
publicvoidinit(ServletConfigconfig)throwsServletException{
System.out.println("#######################");
this.initParam=config.getInitParameter("ref");//接收的初始化参数名称暂时为ref
}
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("**初始化参数:
"+this.initParam);
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
this.doGet(req,resp);
}
配置:
3、如果在Servlet中同时覆写了两个init()方法,则只有取得初始化参数的init()方法起作用。
6、取得其他内置对象
1、通过取getSession()方法取得得HttpSession实例化对象
Servlet本身提供的只有request和response两个对象,Session属于HTTP协议范畴,每次发送请求时,服务器会自动为客户端设置一个Cookie,Cookie只能通过request取得,所以session也只能通过request取得。
在Servlet程序中取得session对象可通过HttpServletRequest接口完成,接口中提供了如下方法:
(1)publicHttpSessiongetSession()
(2)publicHttpSessiongetSession(booleancreate)
程序
packageorg.lxh.servletdemo;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassHttpSessionDemoServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
HttpSessionses=req.getSession();
System.out.println("SESSIONID-->"+ses.getId());
ses.setAttribute("username","李兴华");//设置session属性
System.out.println("username属性内容:
"+ses.getAttribute("username"));
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
this.doGet(req,resp);
}
}
配置
org.lxh.servletdemo.HttpSessionDemoServlet
2、通过getServletContext()方法取得Application实例化对象
在HttpServlet的父类中专门提供给了取得ServletContext接口的对象。
程序:
packageorg.lxh.servletdemo;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassServletContextDemoServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
ServletContextapp=super.getServletContext();
System.out.println("真实路径:
"+app.getRealPath("/"));
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
this.doGet(req,resp);
}
}
配置:
org.lxh.servletdemo.ServletContextDemoServlet
7、Servlet跳转
1、跳转:
(1)客户端跳转:
地址栏跳转之后改变,无法传递request范围的属性,所有操作执行完毕后发生跳转操作,语法:
response.sendRedirect()
(2)服务器跳转:
地址栏不改变,可以传递request范围的属性,无条件跳转,只要执行到了,立刻执行跳转操作,语法:
forward> Servlet中也可以完成跳转,可直接通过HttpServletResponse对象的sendRedirect()方法完成跳转操作。 2、客户端跳转: 程序: packageorg.lxh.servletdemo; importjava.io.*; importjavax.servlet.*; importjavax.servlet.http.*; publicclassClientRedirectDemoextendsHttpServlet{ publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ req.getSession().setAttribute("name","李兴华"); req.setAttribute("info","MLDNJAVA"); resp.sendRedirect("get_info.jsp"); } publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ this.doGet(req,resp); } } 配置: org.lxh.servletdemo.ClientRedirectDemo get_info.jsp: <%@pagecontentType="text/html"pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
sesion属性:
<%=session.getAttribute("name")%>
request属性:
<%=request.getAttribute("info")%>
3、服务器跳转
在Servlet中没有像JSP中的 forward>指令,所以必须依靠RequestDispatcher接口完成,接口中提供了如下方法: (1)publicvoidforward(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOEception (2)Publicvoidinclude(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException 使用RequestDispatcher接口的forward()方法可以完成跳转功能,要想使用此接口需要使用ServletRequest接口提供的如下方法进行实例化: (1)publicRequestDispatchergetRequestDispatcher(Stringpath) 程序: packageorg.lxh.servletdemo; importjava.io.*; importjavax.servlet.*; importjavax.servlet.http.*; publicclassServerR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Servlet 程序 开发 详细 整理 知识点 考点
![提示](https://static.bdocx.com/images/bang_tan.gif)