Form表单提交常见问题

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输出流上进行内容追加
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容