区别辨析

和tomcat区别(考点)

Tomcat: 是Servlet的容器,Servlet运行在Tomcat容器当中
Serlvet: 是用Java编写的服务器端程序 (中间件)
image.png

Servlet与JSP的区别(考点)

  • JSP实际上是从Servlet继承而来,它在Servlet当中又添加/修改了一些方法
  • JSP是Servlet的一个成功应用,是其子集
  • 角色不同:JSP页面可以存在HTML代码与Java代码并存的情况,而Servlet只有调用固定的方法才能将动态内容输出为静态HTML,所以JSP更具有显示层的特色
  • 编程方法不同:Servlet开发Web需要遵循Java的标准,JSP需要遵循一定的脚本语言规范
  • Servlet需要编译后运行:Servlet需要在Java编译器编译后才能运行,
  • 速度不同:JSP效率低于Servlet

servlet代码结构

  1. package com.Lesson8.MyServlet;
  2. import java.io.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. public class Hello extends HttpServlet {
  6. // 初始化方法
  7. public void init() throws ServletException {
  8. }
  9. // 处理HTTP Get请求
  10. public void doGet(HttpServletRequest request, HttpServletResponse response)
  11. throws ServletException, IOException {
  12. response.setContentType("text/html;charset=GB2312");// 设置响应的MIME类型
  13. PrintWriter out = response.getWriter();// 获得一个向客户发送数据的输出流
  14. out.println("<html><body>");
  15. out.println("<h2>这是我的第一个servlet。</h2>");
  16. out.println("</body></html>");
  17. }
  18. // 处理HTTP Post请求
  19. public void doPost(HttpServletRequest request, HttpServletResponse response)
  20. throws ServletException, IOException {
  21. }
  22. // 处理HTTP Put请求
  23. public void doPut(HttpServletRequest request, HttpServletResponse response)
  24. throws ServletException, IOException {
  25. }
  26. // 处理HTTP Delete请求
  27. public void doDelete(HttpServletRequest request, HttpServletResponse response)
  28. throws ServletException, IOException {
  29. }
  30. // 销毁方法
  31. public void destroy() {
  32. super.destroy();
  33. }
  34. }

servlet配置(考点)

<servlet>
            <!-- 配置Servlet名称,名称必须唯一 -->
            <servlet-name>ServletDemo</servlet-name>
            <!-- 配置Servlet完全路径(包名+类名) -->
            <servlet-class>cn.itcast.servlet.ServletDemo</servlet-class>
        </servlet>

        <!-- 配置Servlet映射(访问路径) -->
        <servlet-mapping>
            <!-- 配置Servlet名称,必须和上面的相同 -->
            <servlet-name>ServletDemo</servlet-name>
            <!-- 配置虚拟路径(访问路径) -->
            <url-pattern>/demo</url-pattern>
        </servlet-mapping>

image.png

实例(记忆)

public class RegServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
        // 设置response的编码(必写)
        response.setContentType("text/html;charset=utf-8");
        // 设置request的编码以及获取用户名
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");

        // 获取PrintWriter
        PrintWriter out = response.getWriter();
        // 输出用户名
        out.println("用户名:" + name + "<br>");
        out.flush();
        out.close();
    }
}

Servlet内部方法

重定向与转发(考点)

重定向

HttpServletResponse类中通过方法sendRedirect(java.lang.String location) 可实现页面的跳转
格式:response.sendRedirect (“xxx.jsp”);
该方法跳转后的页面,不能获得之前页面用户提交的数据

转发

RequestDispatcher对象可以把用户对当前的JSP页面或servlet的请求转发给另一个JSP页面或servlet,并且将请求对象和相应对象传递给目标页面
格式:
第一步:得到RequestDispatcher对象:
RequestDispatcher rd = request.getRequestDispatcher(“xxx.jsp”);
第二步:转发:rd.forward( request, response);

使用Session

HttpSession session = request.getSession(true);
随后即可用jsp中的session方法。