SERVLETJSP Unit02: Servlet工作原理
来源:互联网 发布:莆田高仿鞋淘宝店 编辑:程序博客网 时间:2024/05/20 13:36
一.HTTP协议
1.什么是HTTP协议?
- 就是W3C制定的一个规范
- 规定了浏览器和服务器如何通信、通信的数据格式
2.如何通信
- 建立连接
- 发送请求
- 接收响应
- 关闭连接
一个请求一次连接,尽量降低服务器的压力
3.请求数据结构
- 请求行: 请求的基本信息
- 消息头: 对实体内容的描述
- 实体内容: 浏览器向服务器发送的业务数据
4.响应数据结构
- 状态行: 响应的基本信息
- 消息头: 对实体内容的描述
- 实体内容: 服务器向浏览器发送的业务数据
5.注意
1)很多事情不需要我们处理
- 通信的步骤由浏览器和服务器自动实现
- 请求数据中的请求行,消息头由浏览器自动填写
- 响应数据中的状态行,消息头通常由服务器自动填写
2.少量事情需要我们处理
- 请求数据中的实体内容由我们提供
- 响应数据中的实体内容由我们提供
通过request处理请求数据,通过response处理响应数据
二.注册案例
reg.html
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>注册</title></head><body> <!-- 1.完整路径 http://ip:port/项目名/网名 2.绝对路径 格式: /项目名/网名 举例: /servlet2/reg 3.相对路径 当前: /servlet2/reg.html 目标: /servlet2/reg 相对路径: reg --> <form action="reg" method="post"> <p> 账号:<input type="text" name="username"/> </p> <p> 密码:<input type="password" name="pwd"/> </p> <p> 性别: <input type="radio" name="sex" value="M"/>男 <input type="radio" name="sex" value="F"/>女 </p> <p> 兴趣: <input type="checkbox" name="interest" value="food"/>美食 <input type="checkbox" name="interest" value="game"/>竞技 <input type="checkbox" name="interest" value="friend"/>社交 </p> <p> <input type="submit" value="注册"/> </p> </form></body></html>
RegServlet.java
package web;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 RegServlet extends HttpServlet { @Override protected void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //采用方案三解决POST请求乱码问题 req.setCharacterEncoding("utf-8"); //处理请求的一般流程 //1.接收参数 String name = req.getParameter("username"); String pwd = req.getParameter("pwd"); String sex = req.getParameter("sex"); String[] interests = req.getParameterValues("interest"); //采用方案一解决乱码问题 //byte[] bs = name.getBytes("iso8859-1"); //name = new String(bs,"utf-8"); //2.处理业务 System.out.println(name); System.out.println(pwd); System.out.println(sex); if(interests != null) { for(String interest : interests) { System.out.println(interest); } } //3.发送响应 res.setContentType( "text/html;charset=utf-8"); PrintWriter w = res.getWriter(); w.println("<p>ok,"+name+"</p>"); w.close(); }}
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>servlet2</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>reg</servlet-name> <servlet-class>web.RegServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>reg</servlet-name> <url-pattern>/reg</url-pattern> </servlet-mapping></web-app>
三.请求方式
1.什么是请求方式?
- 就是浏览器向服务器发送请求时传递数据的方式
2.常用请求方式
- GET
- POST
3.GET和POST的区别(面试题)
1)GET
- 采用路径传参
- 参数在传递过程中可见,隐私性差
- 路径大小有限制,所有传递的参数大小受限
所有的请求默认都是GET请求
2)POST
- 采用实体内容传参
- 参数在传递过程中不可见,隐私性好
- 实体内容专门用来传参,大小不受限制
在表单上加method=”post”
3)建议
- 参数需要保密时用POST
- 参数较多时用POST
四.Servlet运行原理
五.乱码解决方案
六.查询员工案例
entity\Emp.java
package entity;import java.io.Serializable;public class Emp implements Serializable { private Integer empno; private String ename; private String job; private Double sal; public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; }}
dao\EmpDao.java
package dao;import java.io.Serializable;import java.util.ArrayList;import java.util.List;import entity.Emp;public class EmpDao implements Serializable { public List<Emp> findAll() { //模拟查询所有的员工 List<Emp> list = new ArrayList<Emp>(); Emp e1 = new Emp(); e1.setEmpno(1); e1.setEname("唐僧"); e1.setJob("领导"); e1.setSal(9000.0); list.add(e1); Emp e2 = new Emp(); e2.setEmpno(2); e2.setEname("悟空"); e2.setJob("职员"); e2.setSal(5000.0); list.add(e2); Emp e3 = new Emp(); e3.setEmpno(3); e3.setEname("八戒"); e3.setJob("职员"); e3.setSal(6000.0); list.add(e3); return list; }}
web\FindEmpServlet.java
package web;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import dao.EmpDao;import entity.Emp;public class FindEmpServlet extends HttpServlet { @Override protected void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //1.接收参数 //2.处理业务 EmpDao dao = new EmpDao(); List<Emp> list = dao.findAll(); //3.发送响应 res.setContentType( "text/html;charset=utf-8"); PrintWriter w = res.getWriter(); w.println("<table border='1' cellspacing='0' width='30%'>"); w.println(" <tr>"); w.println(" <td>编号</td>"); w.println(" <td>姓名</td>"); w.println(" <td>职位</td>"); w.println(" <td>薪资</td>"); w.println(" </tr>"); if(list != null) { for(Emp e : list) { w.println("<tr>"); w.println(" <td>"+e.getEmpno()+"</td>"); w.println(" <td>"+e.getEname()+"</td>"); w.println(" <td>"+e.getJob()+"</td>"); w.println(" <td>"+e.getSal()+"</td>"); w.println("</tr>"); } } w.println("</table>"); w.close(); } }
webapp\WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>EmpManager</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>findEmp</servlet-name> <servlet-class>web.FindEmpServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>findEmp</servlet-name> <url-pattern>/findEmp</url-pattern> </servlet-mapping></web-app>
阅读全文
0 0
- SERVLETJSP Unit02: Servlet工作原理
- SERVLETJSP学习(二)—— Servlet工作原理
- Servlet容器工作原理
- Servlet容器工作原理
- Servlet容器工作原理
- Servlet 工作原理解析
- Servlet工作原理
- Servlet 工作原理解析
- Servlet工作原理
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet工作原理
- Servlet 工作原理解析
- Servlet 工作原理解析
- Dwr 学习
- JAVA环境变量
- Mybatis映射多个参数不同的方法
- WebRTC 的回声抵消(AEC、AECM)算法简介
- POJ 3984 迷宫问题
- SERVLETJSP Unit02: Servlet工作原理
- 5-5 计算阶乘和 (10分)
- 解决Can’t locate ExtUtils/MakeMaker.pm in @INC
- A+B Problem(V)
- 网络判断和设置网络(有网无网)
- Android Camera HAL浅析
- 利用TTS API软件来转化语音技巧
- 感知器算法——二维优化
- 6月23日