servlet编程

来源:互联网 发布:商务数据分析课程 编辑:程序博客网 时间:2024/05/04 06:24

 

1.         Java技术的三个平台:
java SE:基础平台
java EE:企业级平台
java ME:微小平台(一般用于手机及家电)
2.         Servlet:标准的服务器端应用程序,可以执行商务逻辑,处理HTTP请求。
1)        要求:
a)、运行在服务器端。
b)、需要Web容器支持。如:Tomcat等。
c)、JAVA编写
2)        结构:
javax.servlet.Servlet       Interface 接口
              ↑implements实现接口
javax.servlet.GenericServlet          class       类
              ↑extends 继承
javax.servlet.http.HttpServlet           class       类
3)        处理流程:
a)、客户端使用浏览器提交对Servlet调用的Get或者Post请求。Request
b)、服务器接到请求后,如果该Servlet是第一次调用,实例化Servlet对象
c)、服务器调用Servlet的service()方法
d)、servlet产生动态的回复内容
e)、服务器发送回复内容至客户端的浏览器
4)        生命周期:
流程:
a)、Load Servlet Class                …………加载Servelt类
b)、Creat Servlet instance           …………实例化Servlet对象
c)、Call the init method               …………调用实例化方法
d)、Call the service method         …………调用服务方法
e)、Call the destroy method         …………调用销毁方法
5)        Servlet中读取Web.XML中参数:
a)、在Web.XML中当前Servlet声明<servlet></servlet>中添加<init-param>子元素,设定参数名<param-name>及参数值<param-value>
b)、在Servlet中,用getInitParameter(“参数名”)方法接收参数值,类型为String类型
c)、由于参数值为String类型,如接收类型不为String类型,需强制类型转换
6)        Servlet获取服务器的运行参数:
代码如下
package serviceInfo;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetServiceInfo extends HttpServlet {

            private static final long serialVersionUID = 1L;
            public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

                response.setContentType("text/html;charset=utf-8");
                PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
                out.println("<HTML>");
                out.println("  <HEAD><TITLE>Show ServiceInfo</TITLE></HEAD>");
                out.println("  <BODY>");
                out.println("服务器名为:"+request.getServerName()+"<br>");
                out.println("服务器IP为:"+request.getRemoteAddr()+"<br>");
                out.println("服务器端口号为:"+request.getServerPort()+"<br>");
                out.println("协议名为:"+request.getScheme()+"<br>");
                out.println("协议版本为:"+request.getProtocol()+"<br>");
                out.println("请求的方法为:"+request.getMethod()+"<br>");
                out.println("上下文路径为:"+request.getContextPath()+"<br>");
                out.println("servlet路径为:"+request.getServletPath()+"<br>");
                out.println("  </BODY>");
                out.println("</HTML>");
                out.flush();
                out.close();
            }

}
效果如下:


服务器名为:localhost
服务器IP为:127.0.0.1
服务器端口号为:8080
协议名为:http
协议版本为:HTTP/1.1
请求的方法为:GET
上下文路径为:/TestServlet
servlet路径为:/servlet/GetServiceInfo


7)        Servlet获取头信息:
代码如下:
package servletHeaderInfo;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetHeaderInfo extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        //先获取用户的头信息,用枚举类型接收
        Enumeration e= request.getHeaderNames();
        String name="";
        //hasMoreElements()方法为是否有更多的元素
        while(e.hasMoreElements()){
            /**
             * 如有元素,则用String类型的对象获取元素名,然后根据元素名
             * 获得头信息的值
             */
            name=(String)e.nextElement();
            //输出
            out.println(name+":"+request.getHeader(name)+"<br>");
        }
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

}
效果如下:

accept:*/*
accept-language:zh-cn
ua-cpu:x86
accept-encoding:gzip, deflate
user-agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
host:localhost:8080
connection:Keep-Alive
原创粉丝点击