创建Servlet的方式之一:实现servlet接口
servlet的生命周期:
1、实例化:创建servlet实例对象
2、初始化:调用init方法完成初始化工作
3、服务:调用service方法来处理用户请求
4、销毁:调用destroy方法来释放占用的内存资源
package com.mashang.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/my")
public class MyServlet implements Servlet {
//生命周期方法:当servler实例对象创建时,就会调用该方法来完成初始化工作,该方法只会被调用一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("MyServlet init");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//生命周期方法:调用service方法来处理用户请求,该方法被多次调用,用户请求就是调用该方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service运行中");
//接收客户端向服务器发起的键值对
System.out.println(servletRequest.getParameter("name"));
System.out.println(servletRequest.getParameter("age"));
//客户端发送请求后,向客户端返回"myServlet"响应
servletResponse.getWriter().write("myServlet");
}
@Override
public String getServletInfo() {
return null;
}
//生命周期方法:当sevice实例化对象销毁前,就会调用该方法来释放占用的内存,而且也只会被调用一次
@Override
public void destroy() {
System.out.println("MyServlet Destory");
}
}
通过service方法处理用户的请求:
通过request(servletRequest)对象得到客户端的相关信息和请求信息(请求行、请求头、请求体);
通过response(servletResponse)对象的方法设置(响应状态码、响应头)
一、requestd 请求对象:封装了用户提交到服务器端的数据,调用该对象的相关方法可以获取封装的信息。
request对象获取请的方法:
String getParameter(String name):返回name 指定参数的参数值;
String[ ] getParameterValue(String name):将name指定参数的所有参数值以数组的形式返回;
Enumeration getParameterNames():返回所有可用属性名的每局;
Map<String ,String[ ]>getParameterMap():将所有的请求参数和参数值以key/value的形式保存。
解决post提交方式的中文乱码问题:request.setCharacterEncoding("UTF-8)
解决get提交方式的中文乱码问题:user = new String (user.getbytes("iso8859-1"),“utf-8”)
解决当一次请求结束,随着request对象的销毁,该作用域中的数据也会被销毁
request.setAttribute(name,value)
request.getAttribute(name)
重定向是客户端发出了两次请求,所以重定向后的页面无法读取到request域中所保存的数据。
二、response响应对象:用于将服务器端的数据发送到客户端,对客户端的请求作出响应。
response.setContentType("text/html;charset=utf-8"):通知浏览器以什么字符集显示服务器回送的数据。
响应数据:response.getWriter().write("服务端传回数据")