第一次执行:
- 客户端通过电脑连接服务器,因为是请求是动态的,所以所有的请求交给WEB容器来处理
- 在容器中找到需要执行的*.jsp文件
- 之后*.jsp文件通过转换变为*.java文件
- .java文件经过编译后,形成.class文件
- 最终服务器要执行形成的*.class文件
第二次执行:
- 因为已经存在了*.class文件,所以不在需要转换和编译的过程
修改后执行:
- 源文件已经被修改过了,所以需要重新转译,重新编译。
客户端发送请求给服务器,TomCat收到请求, jsp在TomCat转换为Java文件,编译成类文件,最后渲染成html文件,返回给浏览器。
最后执行的是.class文件
如果删除.java文件,对程序执行没有影响
如果删除.class文件,.java文件编译成.class
如果jsp页面代码改变,.java文件重新生成。
Java Socket连接TomCat PrintWriter
// 连接地址, 连接本地Jerry服务器Socket s = new Socket("127.0.0.1",8080);// 模拟在浏览器中输入 http://localhost:8080// 写入流。 PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));// test 发送请求到服务器// get/post 提交表单到Jerry的方式// / 表示请求的资源 请求资源的根路径// http协议基于tcp协议// 1.1表示版本pw.println("GET / HTTP/1.1");// host 是随便写,但要有pw.println("Host:abc");// 请求的文本是 HTML纯文本pw.println("Content-Type:text/html");pw.println();// 刷新流pw.flush();// 服务器响应数据到客户端。BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));String str = "";// 读取流从socket, 读取到控制台。 while((str = br.readLine())!=null){System.out.println(str);}br.close();pw.close();s.close();
结果返回tomcat页面的HTML源码。