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
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