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);
-
提交方式
有form表单里面的Method属性控制
GET:(安全性不高)最多只能提交256个字符
把数据放在协议的头部
可以在浏览器里的地址栏里面看到的
POST
协议的体部
不可以在浏览器的地址栏里面看到的
安全性高
数据的长度是没有限制的
想要使用post提交,必须明确指定使用post提交,否则默认都用get -
乱码问题
原则:字符从编写到显示都采用一种编码方式
UTF-8 GBK GB2312
控制字符编写的编码:工程右击->Text file enconding ->GBK,UTF-8
-
数据传输上控制(如果是Get方式提交就必须在servers下面的server.xml中的Connector修改也就是查看端口号那里。
request.setCharacterEncoding("GBK"); response.setCharacterEncoding("GBK");
浏览器显示编码
数据库中的乱码:存的时候是什么编码方式,那么取得时候就是什么编码方式
- 路径问题
我们常需要在form表单中进行跳转,跳转的时候写的Action就设计到路径问题还有就是在Servlet进行内部跳转(获取分发器时)也会涉及到路径问题比如(如下代码)。
getServletConfig().getServletContext()
.getRequestDispatcher("/WEB-INF/jsp/register.jsp")
.forward(request, response);
- 相对路径:相对点
- 绝对路径:以“/”开头,
当/在web应用的前端,代表的Tomcat的路径
如:html
当/在web应用的后台,代表web后台的路径
-
跳转问题
-
内部跳转
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所在的命名空间-
http://localhost:8888/week2/one/a.jsp
a.jsp{ <a href="loginServlet">aa</a> }
点击aa跳转后的路径是
http://localhost:8888/week2/one/loginServlet
-
-
-
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输出流上进行内容追加