Hello Servlet

来源:互联网 发布:python安装 编辑:程序博客网 时间:2024/05/06 09:35

上周老师开始讲了servlet进行开发,前面是jsp+前端+javaBean模式。现在又多了个servlet技术,jsp是在servlet基础上发展出来的技术。


 servlet生命周期,很多博客都写的很好,http://www.cnblogs.com/cuiliang/archive/2011/10/21/2220671.html   

1.实例化(构造函数)

2.初始化

3.服务

4.销毁。

开发servlet有三种方法:

A.实现servlet接口

B.继承GenericServlet

C.继承HttpServlet

servlet3.0之后还可以通过注解开发servlet(JAVAEE 6.0)

  我学习的第一个servlet。

一:首先采用实现servlet接口方式:

Hell.java:

//这是我的第一个servlet,实现servletjiekoupackage com.ncu;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class Hello implements Servlet{/* (non-Javadoc) * @see javax.servlet.Servlet#destroy() */@Overridepublic void destroy() {//销毁servlet,释放内存System.out.println("destroy");//1.reload 该servlet(webApps)//2.关闭tomcat}/* (non-Javadoc) * @see javax.servlet.Servlet#getServletConfig() */@Overridepublic ServletConfig getServletConfig() {// return null;}/* (non-Javadoc) * @see javax.servlet.Servlet#getServletInfo() */@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}/* (non-Javadoc) * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig) */@Overridepublic void init(ServletConfig config) throws ServletException {//该函数用于初始化servlet,类似于类的构造函数,该函数只会被调用一次//该函数只会被调用一次,(当用户第一次访问该servlet时被调用) System.out.print("initialize it!!!");}/* (non-Javadoc) * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) */@Override//req:用于获得客户端(浏览器)信息//res:用于向客户端返回信息public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {// 该函数用于处理业务逻辑//程序员应当把业务逻辑代码写在这里//从res中得到printwriterSystem.out.println("service it");PrintWriter pw=res.getWriter();pw.println("hello world");}}

2.配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <servlet>  <!-- 给你的servlet取名,任意的 -->  <servlet-name>hello</servlet-name>  <!-- 指明servlet的路径(包名+类名 -->  <servlet-class>com.ncu.Hello</servlet-class>   </servlet>   <servlet-mapping>   <!-- 这个servlet名必须和映射的一致 -->     <servlet-name>hello</servlet-name>     <!-- 这是在浏览器中输入的访问该servlet的url -->  <url-pattern>/nicolas</url-pattern>  </servlet-mapping></web-app>

然后部署应用后,启动tomcat服务,进行调试运行:

第一次被访问后,就会执行init()打印输出initialize。只会打印一次,接着不断刷新,刷新一次就执行一个service方法,打印一次service it


访问的路径就是我们在web。xml的 <url-pattern>/nicolas</url-pattern>

http://localhost:8086/servletDemo/nicolas

注意/nicolas是任意的。


然后servlet的销毁发生在reload或关闭tomcat时。

下面reload一下这个servletDemo应用,进入tomcat的管理应用页面(用户和密码一般配置为user:tomcat pwd:s3cret)



二:采用继承GenericServlet来开发servlet,只要重写service方法即可。

HelloServlet.java:

//这是第二种开发servlet的方法//通过继承GenericServlet开发package com.ncu;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.GenericServlet;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class HelloServlet extends GenericServlet{@Overridepublic void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {// TODO Auto-generated method stub//重写service方法try{PrintWriter pw=res.getWriter();pw.print("Hello ,GenericServlet");}catch(Exception e){e.printStackTrace();}}}

web.xml配置这个servlet:

 </servlet-mapping>  <servlet>  <servlet-name>helloservlet</servlet-name>  <servlet-class>com.ncu.HelloServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>helloservlet</servlet-name>  <url-pattern>/helloservlet</url-pattern>  </servlet-mapping>

访问:http://localhost:8086/servletDemo/helloservlet  调试运行:

三:

通过继承HttpServlet开发servlet

通过重写doGetdoPost方法。这是目前用的最多的一种方法。

helloHttpServlet.java文件:

package com.ncu;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class helloHttpServlet extends HttpServlet{/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doDelete(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doDelete(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doDelete(req, resp);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stub//super.doGet(req, resp);//处理get请求try{PrintWriter rw=resp.getWriter();rw.print("HttpServlet  doGet()!!!");}catch(Exception e){e.printStackTrace();}}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doHead(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doHead(req, resp);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doOptions(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doOptions(HttpServletRequest arg0, HttpServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doOptions(arg0, arg1);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doPost(req, resp);//处理post请求}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPut(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doPut(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doPut(req, resp);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doTrace(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void doTrace(HttpServletRequest arg0, HttpServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doTrace(arg0, arg1);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#getLastModified(javax.servlet.http.HttpServletRequest) */@Overrideprotected long getLastModified(HttpServletRequest req) {// TODO Auto-generated method stubreturn super.getLastModified(req);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */@Overrideprotected void service(HttpServletRequest arg0, HttpServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stubsuper.service(arg0, arg1);}/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) */@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stubsuper.service(arg0, arg1);}}

web。xml配置这个httpservlet:

<servlet>  <servlet-name>helloHttpServlet</servlet-name>  <servlet-class>com.ncu.helloHttpServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>helloHttpServlet</servlet-name>  <url-pattern>/helloHttpServlet</url-pattern>  </servlet-mapping>

运行截图:




原创粉丝点击