Servlet---运行在服务器上的小服务程序,用于接收及响应客户端请求,更多的配合动态资源(静态资源有tomcat定义好的default servlet)
- Servlet架构
- Servlet生命周期
//Servlet 通过调用 init () 方法进行初始化。整个生命周期只被调用一次 public void init() throws ServletException { // 简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期 } //Servlet 调用 service() 方法来处理客户端的请求。每有一个请求,就调用一次 public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{ //每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务 } //Servlet 通过调用 destroy() 方法终止(结束)。 public void destroy() { // 终止化代码...由 JVM 的垃圾回收器进行垃圾回收的。 } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 }
-
ServletConfig
用来取Servlet的注册信息
-
ServletContext
servlet上下文,这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。
作用:
域对象(服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据)
可以读取全局配置参数,搜索当前工程目录下面的资源文件
生命周期:服务器启动到从服务器移除或关闭服务器
void setAttribute(String name,Object object) | 添加对象 |
Object getAttribute(String name) | 指定的key读取域对象里面的数据 |
void removeAttribute(String name) | 删除数据 |
InputStream getResourceAsStream(String path) | 将数据转为流的方式 |
Set getResourcePaths(String path) | 相对路径 |
String getRealPath(String path) | 绝对路径 |
-
HttpServletRequest 封装客户端提交的数据
常用方法:
String getHeader(String name) Enum getHeaders() String getParameter(String name) //根据name获取参数 Object getParameterValues(String name) //根据name获取请求参数列表 Map getParameterMap() //记录着前端(如jsp页面)所提交请求中的请求参数和请求参数值的映射关系
中文数据的编码问题:
get请求:在url地址栏中已经进行编码
//方法一,进行转码 String s = new String (name.getBytes("iso-8859-1"),"UTF-8") //二,tomcat进行配置处理
post请求:在获取(getParameter)数据前进行编码指定
request.setCharacterEncoding();
-
HttpServletResponse 负责返回数据给客户端
response.setHeader(“name”,”value”) //设置响应头 response.getWriter().writer(); //发送字符实体内容 response.setCharacterEncoding("UTF-8");// response.getOutputStream().writer() //发送字节实体内容 response.setHeader("Content-Type", "text/html; charset=UTF-8");// response.setStatus(404);//修改状态码 response.sendError(404); // 发送404的状态码+404的错误页面