了解servlet
要使用servlet的方法,首先我们要了解什么是servlet,通俗的讲,servlet就是在服务器端运行的java程序,可以接受用户的请求并做出响应。
servlet的生命周期
总共分为四个周期:
1、实例化-------Servlet 容器创建 Servlet 的实例
初始化-------该容器调用 init ( ServletConfig ) 方法
服务------如果请求 Servlet,则容器调用 service() 方法
销毁-------销毁实例之前调用 destroy() 方法
servlet的方法
在我看来,servlet中的方法,就分为两种,一种是请求的方法,另一种是响应的方法
Request
处理乱码:request.setCharacterEncoding("utf-8");
接受客户端数据: request.getParameter("客户端name属性");
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取客户端传递的参数
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
System.out.println("用户名:" + uname);
System.out.println("密码" + upwd);
}
}
设置请求域数据
request.setAttribute(String str,Objest obj);
转发(转发是不携带数据的)
request.getRequestDispatcher("login.jsp").forward(request, response);
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//设置请求域数据
request.setAttribute(String str,Objest obj);
//转发
request.getRequestDispatcher("要转发得servlet或html").forward(request, response);
}
}
获取请求域数据
request.getAttribute(String str);只能在一个请求中传递数据,作用域是一次请求
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//设置请求域数据
request.getAttribute(String str);
}
}
Response
处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
获取字符输出流
PrintWriter out = response.getWriter();
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取字符输出流
PrintWriter out= response.getWriter();
//输出数据
out.print("Hello Servlet");
out.close();
}
}
一定要记得释放资源!!!
重定向
response.sendRedirect("重定向servlet或html");
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//重定向
response.sendRedirect("重定向servlet或html");
}
}
response.addCookie(Cookie c);
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Coolie c = new Coolie(String name,String value);
response.addCookie(Cookie c);
}
}
重点,圈起来,要考!
转发和重定向的区别:
1、转发的url不变,重定向的url会变。
2、转发只有一次请求,重定向有两次请求。
3、转发不携带数据,重定向携带数据。
4、转发是服务器端的,重定向是客户端和服务器端进项