zoukankan      html  css  js  c++  java
  • Servlet中的一些注意事项

    servlet中的一些注意事项

    1 什么是servlet?

    1)Servlet是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现。

    2)Servlet作为服务器端的一个组件,它的本意是“服务器端的小程序”。Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例。

    3)简单可以理解为 Servlet就是用来处理客户端的请求的.

    2、Servlet开发规则

    在实际开发中,通过继承HttpServlet来完成Servlet的开发

    public class ServletDemo extends HttpServlet{
    
    }
    

    3、Servlet类的相关方法:

    1、doGet : Servlet中用于处理get请求的方法

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    }
    

    2、doPost : Servlet中用于处理post请求的方法
    doPost方法中默认调用的是doGet的方法

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request, response);
    	}
    

    3、service
    在Servlet的顶层实现中,在service方法中调用的具体的doGet或者是doPost。在实际开发Servlet的过程中,可以选择重写doGet以及doPost 或者 直接重写service方法来处理请求。

     public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
    
            HttpServletRequest  request;
            HttpServletResponse response;
    
            try {
                request = (HttpServletRequest) req;
                response = (HttpServletResponse) res;
            } catch (ClassCastException e) {
                throw new ServletException("non-HTTP request or response");
            }
            service(request, response);
        }
    

    4、关于request和response

    (1)request

    request的作用有3个:

    1、获取浏览器的请求参数,如:

    String username = request.getParameter("username");
    String password = request.getParameter("password");
    

    2、获取项目的虚拟路径,如:

    String contextPath = request.getContextPath();
    

    3、转发

    //获取转发器
    RequestDispatcher requestDispatcher = request.getRequestDispatcher("WEB-INF/beautiful.html");
    //进行请求的转发
    requestDispatcher.forward(request, response);
    

    (2)response

    response的作用有2个:

    1.给浏览器响应一个字符串或一个页面

    //响应中文乱码的解决方案:在获取流之前设置响应的内容的类型及字符集
    
    		response.setContentType("text/html;charset=UTF-8");
    		PrintWriter writer = response.getWriter();
    		writer.write("响应成功!");
    

    2.重定向

    response.sendRedirect("WEB-INF/beautiful.html");
    

    5、转发和重定向的区别

    1.转发发送一次请求;重定向发送两次请求
    2.转发浏览器地址栏地址无变化;重定向浏览器地址栏地址有变化
    3.转发可以访问WEB-INF目录下的资源;重定向不可以访问WEB-INF目录下的资源
    4.转发可以共享request域中的数据;重定向不可以共享request域中的数据

    使用转发和重定向的场景

    一般情况下,登录成功重定向,登录失败使用转发。

    6、关于路径的解析问题

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <!-- 可以通过base标签的href属性将当前页面中所有的相对路径变为绝对路径 -->
    <base href="http://localhost:8080/Web_Ex/">
    </head>
    <body>
    <a href="pages/login.html">我要登录</a><br>
    	<br>
    	<a href="">我要注册</a>
    </body>
    </html>
    

    什么是绝对路径?

    以 / 开头的路径即为绝对路径

    / 代表的意义:

    如果路径由浏览器解析,那么 / 代表http://localhost:8080/
    以下路径由浏览器解析:
    1)HTML标签中的路径:如a标签中href属性中的路径、form标签中action属性中的路径等
    2)重定向中的路径

    如果路径由服务器解析,那么 / 代表http://localhost:8080/Web_project/
    以下路径由服务器解析:
    1)web.xml配置文件中url-pattern标签中的路径
    2)转发中的路径

  • 相关阅读:
    Docker安装mysql
    解决SpringMVC+Thymeleaf中文乱码
    Web API 自动生成接口文档
    .Net Core 定时任务TimeJob
    使用 FTP 迁移 SQL Server 数据_迁移数据_快速入门(SQL Server)_云数据库 RDS 版-阿里云
    SQLServer · 最佳实践 · 如何将SQL Server 2012降级到2008 R2-博客-云栖社区-阿里云
    PNG文件转png8
    实战ASP.NET访问共享文件夹(含详细操作步骤)
    MVC JsonResult
    你必须知道的EF知识和经验
  • 原文地址:https://www.cnblogs.com/zhqin/p/11695365.html
Copyright © 2011-2022 走看看