美文网首页程序员
Servlets & JSP 学习笔记(一)

Servlets & JSP 学习笔记(一)

作者: 值得_e36c | 来源:发表于2018-10-25 13:43 被阅读0次

    1.http:

    超文本传输协议:HyperText Transfer Protocol

    是web上客户和服务器之间通信所用的协议

    2.URL

    统一资源定位符:Uniform Resource Locators

    web上的每个资源都有唯一的地址

    3.概述总结

    4.MVC设计模式

    MVC即模型—视图—控制器

    就是把业务逻辑从servlet中抽出来,把它放在一个模型中,所谓模型就是一个可重用的普通java类,是业务数据和方法的组合。

    5.用eclipse完成的第一个servlet

    package cc.openhome;

    import java.io.IOException;

    import java.io.PrintWriter;

    import javax.servlet.ServletException;

    import javax.servlet.annotation.WebServlet;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    /**

    * Servlet implementation class HelloServlet

    */

    @WebServlet("/hello.view")

    public class HelloServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;


        /**

        * @see HttpServlet#HttpServlet()

        */

        public HelloServlet() {

            super();

            // TODO Auto-generated constructor stub

        }

    /**

    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

    */

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

    // TODO Auto-generated method stub

    response.getWriter().append("Served at: ").append(request.getContextPath());

    response.setContentType("text/html;charset=UTF-8");

    PrintWriter out = response.getWriter();

    String name = request.getParameter("name");

    out.println("<html>");

    out.println("<head>");

    out.println("<title>Hello Servlet</title>");

    out.println("</head>");

    out.println("<body>");

    out.println("<h1> Hello "+name+" ! </h1>");

    out.println("</body>");

    out.println("</html>");

    }

    /**

    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

    */

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

    // TODO Auto-generated method stub

    doGet(request, response);

    }

    }


    运行结果

    6.一些细节

    关于HttpSerlvet类

    该类继承了GenericServlet类,而后者实现了Servlet接口。servlet接口定义了基本行为,例如与Servlet生命周期相关的init()、destroy()方法以及提供服务时需要调用的service()方法等。

    service方法在请求到来时会被容器调用,然后根据请求判断该调用doGet、doPost以及其它方法。

    关于@WebServlet的使用

    例如@WebServlet{

        name = "Hello";

        urlPatterns = {"/hello.view"};

        loadOnStartup = 1'

    }

    当客户端的请求的url为/hello.view,则由名字为Hello的Servlet来处理。loadOnStartip为加载顺序。

    使用web.xml

    早期版本不用@WebServlet来定义标注,之前必须在WEB-INF目录下建立一个web.xml文件,该文件为部署描述文件(Deployment Descriptor 简称DD)

    7.web容器的作用

    包括请求信息的收集、HttpServletRequest对象以及HttpServletResponse对象的创建、输出HTTP响应的转换、两个对象的销毁以及回收等等,当然还有很多。有了web容器,就可以专心在java对象之间的互动。

    8.关于HttpServletRequest

    一些方法:

    getParameter():指定请求参数名称来获取对应的值

    getParameterValues():指定请求参数名称来获得对应的值的数组,返回值为数组

    getParameterNames():返回一个Enumeration对象,包括所有请求参数的名称

    getParameterMap():请求参数以map对象返回,键为请求参数名称,值为请求参数值。

    除此之外,还有getHeader、getHeaders、getHeaderNames,用法与以上类似。

    getReader方法:让你取得一个BufferedReader对象,利用该对象读取请求的body内容

    获取body内容的servlet代码 发出请求的html代码

    getInputStream方法:利用该方法上传文件,不过比较琐碎

    getPart与getParts方法取得上传文件:

    html界面 servlet代码

    注意的点:

    1.窗体发送时,如果要上传文件,<form>标签里的enctype属性必须设为multipart/form-data.

    2.@MultipartConfig:只有设置此标注才能使用getPart相关API,初次之外,它还可以设置相关属性。

    相关属性

    3.这个例子中获得的filename为带路径的文件名,所以实际运行会报错,应该想办法获得纯文件名

    header内容

    9.使用RequestDispatcher调派请求

    1.使用HttpWServletRequesr的getRequestDispatChar()方法取得RequestDispatcher接口实例,

    2.include方法:可以将另一个servlet操作流程包含在当前servlet之中

    3.如果有必须共享的属性,可以设置给请求对象设为属性,称为请求范围属性。相关方法如下:

    相关属性

    4.forward()方法:直接将对浏览器的响应交给另一个servlet

    需要注意forward方法与下面response.sendRedirect()方法的区分,具体可以参考另外一篇文章:https://www.jianshu.com/p/ab827484147e

    10.关于HttpServletResponse

    使用getWriter输出字符

    response.setLocale():设置地区信息,包括语系和编码方式

    response.setCharacterEncoding():设置字符编码方式

    response.setContentType():该方法调用了上一个方法,也可以设置字符编码方式,其中该方法第一个参数代表mime类型名称,表示返回的响应类型。

    初次之外,resquest也需要设置编码方式,一般在程序中如下写:

    使用getOutputStream()输出二进制字符

    一个读取pdf的实例:

    代码 代码续

    使用sendRedirect()、sendError()方法

    一个用来对url重定向,一个用来发送错误信息。

    相关文章

      网友评论

        本文标题:Servlets & JSP 学习笔记(一)

        本文链接:https://www.haomeiwen.com/subject/scjbzftx.html