您的位置:首页 > 编程语言 > Java开发

JavaWeb中Servlet的使用

2013-10-16 15:54 543 查看
Servlet的使用:
Servlet首先要创建javaweb的工程,而且要使用tomcat服务器或者是Apache官网的其他的服务器,还要添加到工具里面。
工具给我们生成了一个Servlet类,它继承自HttpServlet。并且生成了init(),destory(),doGet(),doPost()方法,这些方法需要我们按照自己的需求去实现。其中init和destory域servlet的生命周期有关。
Init方法会在启动的时候调用,而且只会调用一次,而destory方法会在结束时调用,清空缓存。
做web开发最常用http协议方法是get和post,这里的doGet和doPost方法正是让我们处理用户的get和post请求的地方。
每个Servlet在创建后,我们都必须给它配置一个映射的地址,才能访问,好在工具已经帮我们做了这一步,点开工程下的WebRoot文件夹下的Web-INF,我们会看见一个web.xml的文件。
<servlet>
<description>Thisis the description of my J2EE component</description>
<display-name>This is the display name of my J2EEcomponent</display-name>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>myservlet.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/servlet/HelloWorldServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet></servlet>用于是配置一个新建的Servlet,description和display-name标签主要是描述性的,可以忽略不计,甚至可以干掉。
servlet-name标签相当于给这个Servlet起一个别名,给哪个Servlet,就给servlet-class标签里配置的Servlet。
servlet-class正是我们刚才创建的servlet的全路径。
配置它的访问路径<servlet-mapping>正是用于配置路径映,servlet-name这里就配置刚才哪个别名,url-pattern就配置真实访问路径。
welcome-file-list在这里与我们配置Servlet没有任何关系,它表示当访问工程时,默认访问哪个具体页面。
现在我们重新部署一下,然后启动服务器,在浏览器输入
http://localhost:8080/工程名/包名/Servlet类名
根据显示的网页来看,我们这里只是调用了doGet方法。
我们把doGet方法修改一下,打印一些其他的文字或标签。
改完之后保存并刷新一下工程,然后刷新一下浏览器,会发觉内容已经变了?注:凡是修改Servlet或者jsp这类操作,MyEclipse会自动重新部署一下,
且不需要重启服务器,但是以后涉及到类的创建,方法的修改,配置修改,往往需要重新部署并重新启动服务器,才能看到最新版本。
至此,我们已经用Servlet开发了一个小小的网页。
在弄清楚整个过程之前,我们有必要去了解一下Servlet的生命周期
Servlet生命周期包含四个阶段
1,启动阶段:Servlet里没有main方法,自己不能启动,所以一般由web服务器(如tomcat)启动,可以想象,web服务器肯定有main方法。
2,初始化阶段:这个时候会调用init方法,这个方法只会在第一次访问该servlet时调用一次。我们可以在这个方法里面做一些初始化的操作,比如打开数据库连接,读取配置文件等等。
3,请求处理阶段:servlet会根据用户请求的方式(get或者post)来调用doGet或者doPost方法。
4,销毁阶段:servlet被tomcat卸载(移除)时,会调用destory方法,这个方法只会调用一次。我们可以在这个方法里面做一些资源释放的工作。
编写Servlet的重点在请求处理阶段,这一块是整个编码的核心。
我们先看看Servlet中的doGet方法
这个方法包含两个参数:HttpServletRequest和HttpServletResponse
HttpServletRequest:http请求对象,是服务器在接收用户请求后给我们封装的对象,所有与请求有关的数据(比如请求的地址,参数,请求的数据,上传的文件,客户端的ip等)都被包含在这个对象里面。为了便于讲解,我们把这种对象称为request对象。
HttpServletResponse:http响应对象,我们可以通过这个对象给用户响应一些内容,比如网页或cookie(以后会介绍)。为了便于讲解,我们把这种对象称为response对象。
response对象可以得到一个输出流对象:
PrintWriter out =response.getWriter();
通过这个对象,可以给用户输出网页信息
out .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>AServlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println(" Hello world ");
out.println(", doGet method");
out.println(" Hello world ");
out.println(" </BODY>");
out.println("</HTML>");
最后刷新并关闭
out.flush();
out.close();
有时候打印中文会出现乱码,我们可以在最前面加上:
response.setContentType("text/html;charset=gb2312");这句代码来解决,里面的gb2312即是一种编码(其他的编码还有gb2312,utf-8等)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web开发 javaweb