最近在复习Servlet,发现其中有很多细节方面的东西都没有接触到,只是学了大概
1.请求转发和请求重定向的区别
2.输入参数为中文时候的乱码问题
3.Web工程中的目录写法
下面分别阐述
1.请求转发和请求重定向的区别
请求转发:
request.getRequestDispatcher("/test.jsp").forward(request, response);
请求重定向:
response.sendRedirect("/test.jsp");
请求转发是服务器行为,本质上是一次请求,所以参数可以传递
请求重定向是浏览器行为,本质上是俩次请求,由浏览器重新发出的请求去访问页面。因为是新的请求,所以参数不能够传递。
2.输入参数为中文时候的乱码问题
最新版本的tomcat的编码默认为utf-8,所以get处理中文和post一样处理
- 在浏览器端发送请求,调
用request.setCharacterEncoding("UTF-8");
来设置服务器接受信息的编码 response.setContentType("text/html;charset=UTF-8");
指定HTTP响应的编码,同时指定了浏览器显示的编码response.setCharacterEncoding("UTF-8");
来设置HTTP响应的编码,如果之前通过response.setContentType("text/html;charset=UTF-8");
设置了,则会覆盖之前的设置,所以开发时候只使用上面的方法即可
Web工程中的目录写法
>如果"/"是给服务器使用,则代表当前的Web工程>如果"/"是给浏览器使用,则代表Webapps目录
"/"代表的是当前Web工程#
this.getServletContext().getRealPath(/index.jsp)
2.在服务器端forward到其他页面
this.getServletContext().getRequestDispatcher("/index.jsp");
3.使用include
指令或<jsp:include>
引入页面
<%@include file = "/index.jsp"%>
<jsp:include page = "/index.jsp"%>
"/"代表的是当前webapps目录
1.请求重定向
response.sendRedirect("/blockDemo01/index.jsp");
2.使用超链接跳转
3.form表单提交
4.js脚本和css引用
在JSP页面中获得项目名称(blockDemo01)有俩种方式${pageContext.request.contextPath}
,<%=request.getContextPath() %>