java 之servlet
来源:互联网 发布:王军税务总局调离知乎 编辑:程序博客网 时间:2024/05/23 14:45
(1)客户机将请求发送到服务器。
(2)服务器上的Web容器实例化(装入)Servlet
(3)Web容器将请求信息发送到 Servlet。
(4)Servlet 创建一个响应,并将其返回到Web容器
(5)Web容器将响应发回客户机。
(6)服务器关闭或Servlet空闲时间超过一定限度时 调用destory()方法退出。
Servlet生命周期
服务器加载servlet->服务器创建servlet类实例 ->调用servlet实例的init()方法-> 收到请求 -> 调用service()方法
->service()方法处理请求并将输出结果返回客户端-> servlet等待下一个请求或由服务器卸载 -> servlet在服务器调用
destroy()方法后被卸载
下面用servlet的接口httpservlet编程查看servlet的工作流程新建一个httpservlet
public class Servler extends HttpServlet {
public void destroy() {
super.destroy();
System.out.println("dodestory...");
}
public void init() throws ServletException {
super.init();
System.out.println("doinit...");
}
private static final long serialVersionUID = 1L;
public Servler() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet...");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost...");
}
}
在web.xml文件配置他的访问路径
<servlet-name>Servler</servlet-name>
<servlet-class>servlers.Servler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servler</servlet-name>
<url-pattern>/Servler</url-pattern>
</servlet-mapping>
然后我通过post方法访问,在服务器中得到
可见是先调用init()方法,在调用service()方法,执行完毕后,并未马上销毁,而是等待下一次的连接
servlet中还有两个重要的东西servletRequest和servletResponse
System.out.println("doPost...");
String name=request.getParameter("name");
String age=request.getParameter("age");
System.out.print("name="+name+"age="+age);
String str="hello post";
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
response.getWriter().write(str);
}
public static void main(String[] args) {
String str="name=zhang&age=12";
StringBuffer ab=new StringBuffer();
ab.append("POST /first/Servler HTTP/1.1\r\n");
ab.append("Host: localhost:8080\r\n");
ab.append("Accept-Language: zh-cn\r\n");
ab.append("Content-Type: application/x-www-form-urlencoded\r\n");
ab.append("Content-Length: "+str.length()+"\r\n");
ab.append("Connection: close\r\n");
ab.append("\r\n");
ab.append(str);
Socket sb;
try {
sb = new Socket("localhost",8080);
OutputStream bos=sb.getOutputStream();
bos.write(ab.toString().getBytes());
InputStream bis=sb.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(bis),1024);
String res=br.readLine();
while(res!=null){
System.out.println(res);
res=br.readLine();//此处是一行一行读回传的数据,并输出
}
bos.flush();
bos.close();
bis.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
StringBuffer ab=new StringBuffer();
ab.append("GET /first/Servler?name=zhang&age=12 HTTP/1.1\r\n");
ab.append("Host: localhost:8080\r\n");
ab.append("Accept-Language: zh-cn\r\n");
//ab.append("Content-Type: application/x-www-form-urlencoded\r\n");
//ab.append("Content-Length: "+str.length()+"\r\n");
ab.append("Connection: close\r\n");
ab.append("\r\n");
//ab.append(str);
- Java之Servlet开发
- Java web之Servlet
- java ee 之 servlet
- JAVA之servlet
- Java之Servlet详解
- java 之servlet
- Jenkins之java servlet
- JAVA学习之Servlet
- java web 之servlet
- Java之Jsp、Servlet
- Java之Servlet
- Java学习之Servlet
- Java之Servlet
- java之servlet
- JAVA之servlet
- Java Servlet之过滤器
- java之Servlet
- java 之servlet
- 版本控制工具Subversion
- Qemu模拟arm cpu运行Linux
- I/O and Muxing/Demuxing Library
- C++ 字符串删除匹配括号及括号里的内容
- decoding_encoding.c
- java 之servlet
- muxing.c
- 黑马程序员_java中的反射机制
- ffmpeg音视频同步分析
- 编程回忆之java回忆(double和Double)
- 源码公开的TCP/IP协议栈在远程监测中的应用
- 解决 *IRA200E AUXILIARY STORAGE SHORTAGE 问题
- TrueTypeFont之TTX/FontTools
- 防360屏蔽办法 代码一