Form表单提交常见问题

作者: 清枫_小天 | 来源:发表于2016-07-07 18:39 被阅读1142次

    Form表单的提交

    • 涉及的常识问题:
      http://localhost:8888/浏览器中输入这个地址默认的访问是你Tomcat中webapps目录下的文件。
      http://localhost:8888/Hello访问的是webapps下Hello目录中的文件

    • 新建一个jsp文件。body代码如下:

        <body>
        这是我们的第一个web项目
        <form action="sessionOne" method="post"></form>
        <input type="text" name="username">
        <input type="submit" value="提交">
      

      </body>

    Form表单的提交

    我们在SessionOne的Servlet中,先拿到你在form表单里的数据通过如下方式;
    在doPost中代码如下:

         tring name = request.getParameter("username");
        String sex = request.getParameter("gender");
        String[] hobby = request.getParameterValues("hobby");
        PrintWriter printWriter = response.getWriter();
        printWriter.println("name:"+name);
    
    1. 提交方式
      有form表单里面的Method属性控制
      GET:(安全性不高)最多只能提交256个字符
      把数据放在协议的头部
      可以在浏览器里的地址栏里面看到的
      POST
      协议的体部
      不可以在浏览器的地址栏里面看到的
      安全性高
      数据的长度是没有限制的
      想要使用post提交,必须明确指定使用post提交,否则默认都用get
    2. 乱码问题
      原则:字符从编写到显示都采用一种编码方式
      UTF-8  GBK GB2312
    • 控制字符编写的编码:工程右击->Text file enconding ->GBK,UTF-8

    • 数据传输上控制(如果是Get方式提交就必须在servers下面的server.xml中的Connector修改也就是查看端口号那里。

           request.setCharacterEncoding("GBK");
           response.setCharacterEncoding("GBK");
      
    • 浏览器显示编码

    • 数据库中的乱码:存的时候是什么编码方式,那么取得时候就是什么编码方式

    1. 路径问题

    我们常需要在form表单中进行跳转,跳转的时候写的Action就设计到路径问题还有就是在Servlet进行内部跳转(获取分发器时)也会涉及到路径问题比如(如下代码)。

     getServletConfig().getServletContext()
    
        .getRequestDispatcher("/WEB-INF/jsp/register.jsp")
        .forward(request, response);
    
    • 相对路径:相对点
    • 绝对路径:以“/”开头,
      当/在web应用的前端,代表的Tomcat的路径
      如:html
      当/在web应用的后台,代表web后台的路径
    1. 跳转问题

      • 内部跳转

           context
           request
           .getRequestDispatcher("WEB-INF/jsp/first.jsp")
           .forword(req,resp);
        
      • 路径

        • 绝对 /开头
          后台(内部分发如servlet) / =>项目根目录(webcontent)
          前台 / =>服务器根目录(webapps)

            (重定向跳转)
            response.sendRedirector("/");
            <form action="/"></form>
            <a href="/"></a>
          
        • 相对
          相对当前文件(jsp,html..)或者当前Servlet所在的命名空间

                    a.jsp{
                    <a href="/loginServlet">aa</a>
                    }
            * 点击aa跳转后的路径是  
            `http://localhost:8888/loginServlet`   
    

    @WebServlet("/toFirstServlet")
    toFirstServlet{
    //内部跳转
    //request.getRequestDispatcher("/a.jsp");
    response.sendRedirector("/a.jsp");
    }

    • forward()
      重置response输出流
    • include()
      在上一个response输出流上进行内容追加

    相关文章

      网友评论

      • yanerly:还是不太清楚什么时候用绝对路径,什么时候用相对路径
        清枫_小天:@yanerly 试一下就看浏览器地址栏就知道了。

      本文标题:Form表单提交常见问题

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