Servlets 关于一些基本JavaWebApplication/Servlet的建议

Servlets 关于一些基本JavaWebApplication/Servlet的建议,servlets,http-method,Servlets,Http Method,我正在学习如何使用servlet构建Java Web应用程序。 到目前为止,我用Tomcat服务器建立了一个Maven项目,并用一些表单创建了一个基本应用程序并运行。但我有一些基本问题: JavaServlet包的doGet和doPost方法之间有什么区别?我理解请求和响应之间的区别,我理解HTML GET和POST,但由于应用程序是从服务器端工作的,我感到困惑 在下面的示例中,为什么我需要调用doGet方法的doPost方法(它来自我使用的教程) 当我运行服务器并在浏览器中打开它时,我可以

我正在学习如何使用servlet构建Java Web应用程序。 到目前为止,我用Tomcat服务器建立了一个Maven项目,并用一些表单创建了一个基本应用程序并运行。但我有一些基本问题:

  • JavaServlet包的doGet和doPost方法之间有什么区别?我理解请求和响应之间的区别,我理解HTML GET和POST,但由于应用程序是从服务器端工作的,我感到困惑

  • 在下面的示例中,为什么我需要调用doGet方法的doPost方法(它来自我使用的教程)

  • 当我运行服务器并在浏览器中打开它时,我可以使用按钮提交表单(见下文)。按钮将我重定向到/displayuserservlet,其中显示我提供的名字和姓氏。如果我随后手动调用/displayuserservlet,则显示的名字和姓氏等于“null”。那么,为什么信息没有存储在服务器上(?),我该如何做(如果我不想存储,例如,一个文件路径/文件名供以后使用)

  • 我的“网站”/index.xml`表单片段:

    <form action="/displayuserservlet" method="post">
       <center>
          First name:
          <input type="text" name="firstName" value="John">
          <br>
          Last name:
          <input type="text" name="lastName" value="Doe">
          <input type="submit"><!-- Press this to submit form -->
       </center>
    </form>
    
    
    名字:
    
    姓氏:
    我的Servlet:

    @WebServlet("/displayuserservlet")
    public class DisplayUserServlet extends HttpServlet {
    
        //REQ is anything that comes FROM the browser
        //RES is anything sent TO the browser
        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {
            res.setContentType("text/html");
            PrintWriter pw = res.getWriter();//get the stream to write the data
            String title = "Results of form";
            String firstName = req.getParameter("firstName");
            String lastName = req.getParameter("lastName");
    
            //writing html in the stream
            pw.println(ServletUtilities.headWithTitle(title) +
                    "<body bgcolor=\"#fdf5e6\">\n" +
                    "<h1>" + title + "</h1>\n" +
                    "<p>First name:" + firstName + "</p>\n" +
                    "<p>First name:" + lastName + "</p>\n" +
                    "</body></html>");
    
            pw.close();//closing the stream
        }
    
        @Override
        public void doPost(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {
            doGet(req, res);
        }
    }
    
    @WebServlet(“/displayuserservlet”)
    公共类DisplayUserServlet扩展了HttpServlet{
    //REQ是来自浏览器的任何内容
    //RES是发送到浏览器的任何内容
    @凌驾
    公共无效数据集(HttpServletRequest-req、HttpServletResponse-res)
    抛出ServletException、IOException{
    res.setContentType(“文本/html”);
    PrintWriter pw=res.getWriter();//获取流以写入数据
    String title=“表单结果”;
    字符串firstName=req.getParameter(“firstName”);
    字符串lastName=req.getParameter(“lastName”);
    //在流中编写html
    pw.println(ServletUtilities.headWithTitle(title)+
    “\n”+
    “”+标题+“\n”+
    名字:“+firstName+”

    \n+ 名字:“+lastName+”

    \n+ ""); pw.close();//关闭流 } @凌驾 public void doPost(HttpServletRequest-req、HttpServletResponse-res) 抛出ServletException、IOException{ doGet(需求、资源); } }
    已编辑:调用代码格式

    doGet()
    doPost()
    以响应客户端发出的GET和POST请求。如果希望处理GET和POST请求,但希望以完全相同的方式处理它们,则可以使用
    doGet()
    调用
    doPost()
    ,反之亦然,如示例所示。或者,如果希望以不同的方式处理这些请求类型,则可以以不同的方式实现它们。还有用于其他请求类型的方法--
    doPut()
    用于PUT请求,等等

    方法
    Request.getParameter()
    返回请求参数的值,即在其请求中从客户端传递的值。如果客户端不提供值,此方法将返回
    null
    。服务器上没有存储任何内容——如果您希望存储数据,您可以自己存储。您可以将其暂时存储在
    会话
    对象中,或者更永久地存储在数据库或其他存储系统中

    有很多关于Java web编程的好书。试图通过查看“hello,world”示例来找出所有位是如何组合在一起的,这可能不是处理这个非常复杂的主题的最佳方法。

    doGet()
    doPost()
    被调用以响应客户机发出的get和POST请求。如果希望处理GET和POST请求,但希望以完全相同的方式处理它们,则可以使用
    doGet()
    调用
    doPost()
    ,反之亦然,如示例所示。或者,如果希望以不同的方式处理这些请求类型,则可以以不同的方式实现它们。还有用于其他请求类型的方法--
    doPut()
    用于PUT请求,等等

    方法
    Request.getParameter()
    返回请求参数的值,即在其请求中从客户端传递的值。如果客户端不提供值,此方法将返回
    null
    。服务器上没有存储任何内容——如果您希望存储数据,您可以自己存储。您可以将其暂时存储在
    会话
    对象中,或者更永久地存储在数据库或其他存储系统中


    有很多关于Java web编程的好书。通过查看“hello,world”示例,试图找出所有比特是如何组合在一起的,这可能不是处理这个非常复杂主题的最佳方法。

    Java Servlet包的doGet和doPost方法之间的区别是什么?我理解请求和响应之间的区别,也理解HTML GET和POST,但由于应用程序是从服务器端运行的,我感到困惑。

    在doGet方法中,参数被附加到URL,并与头信息一起发送。在doPost中,参数在正文中以单独的行发送。。。doGet()方法通常用于查询或从服务器获取一些信息。doPost()通常用于更新或向服务器发布某些信息

    例如,doGet()URL如下所示:

    www.yourwebsite.com/servleturl?parameter1=smeting¶meter2=smthingelse

    但是,doPost()URL不显示URL中的参数,因此它只是:

    www.yourwebsite.com/servleturl

    您应该始终使用doPost处理敏感信息,如登录名或付款表单

    在下面的示例中,为什么我需要调用doGet方法的doPost方法(它来自我使用的教程)

    这被称为POST-REDIRECT-GET。这基本上是一个防止