客户端请求编码POST/GET方式----RequestDispatcher----Cookie

一、客户端请求参数的编码:浏览器当前是什么编码就以什么编码传递数据
通知服务器请求参数使用的编码 
request.setCharacterEncoding("UTF-8")只对Post有效
方式一、
针对get方式的请求中文参数,手工编码
String desc = request.getParameter("desc");
get方式服务器都用ISO-8859-1去解码


new String(desc.getBytes("ISO-8859-1"),"UTF-8");
需要对每一个请求参数都进行编码


方式二、
解决get方式请求参数的中文编码,可以修改Tomcat的配置
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>
不建议使用,依赖服务器


二、ServletRequest对象也是一个域对象,即其内部维护了一个Map对象


三、转发
由A转向B,A称之为源资源,B称之为目标资源


源资源和目标资源共享请求和响应对象。
源资源转发前会清空响应对象缓存中的内容。


转发前,不要刷新或关闭源资源的输出流。
即:源资源的所有输出都无效。


四、RequestDispatcher接口
1、作用:
a、实现转发
forward(ServletRequest request, ServletResponse response))
b、实现包含
include(ServletRequest request, ServletResponse response)
A要包含B,A称之为源资源,B称之为目标资源
特点:A和B的所有输出会合并,由A来显示
A和B共享request和response对象


目标组件设置的所有响应头无效








2、该对象实例的获取
a、SerlvetRequest.getRequestDispatcher(String path):
参数path,路径的写法上
path可以使用绝对路径,也可以使用相对路径
绝对路径以"/"开头,代表当前web应用
b、SerlvetContext.getRequestDispatcher(String path):
参数path,必须以"/"开头,即只能使用绝对路径


五、各种url地址的写法
5.1相对路径
不以“/”开头
5.2绝对路径
以"/"开头
开发中建议使用绝对路径
问题:绝对路径写法中,何时加项目名称,何时不加项目名称
路径如果是给浏览器用的,需要加项目名称;服务器用的,不需要加项目名称


/day06是应用名称
request.getReqeustDispatcher(String path): 不需要加   / 代表当前应用    /servlet/ServletDemo1
ServletContext.getRealPath(String path):  不需要    / 代表当前应用
form表单的action:要加。
HttpServletResponse.sendRedirect(String path):需要
href 需要
img src 需要




六、会话技术
1、Cookie:客户端技术
Cookie是服务器Servlet向客户端传递的一段小数据。
保存客户端。再访问其他服务器资源时会从客户端传递给服务端。
cookie属于某个特定客户端的。


http://www.163.com/app1/username=admin


Cookie的属性:
name:Cookie的名称。必须的
value:单一的值。必须的
comment:可选的。注释
path:可选的。路径                    /app1

/app1
访问的资源路径是http://www.163.com/app2/1.html 不会带cookie过来
访问的资源路径是http://www.163.com/app1/servlet/s/s  会带cookie过来

默认值:/day06/servlet
访问的地址是:http://localhost:8080/day06/1.jsp



domain:可选的。域名   itheima.com    http://www.163.com
如果访问的地址是http://www.itcast.cn/myapp/servlet1
访问的地址是http://www.163.com/app1
默认值:当前写cookie的网站域名
age:可选的。生命值
默认生命值是浏览器进程。
version:可选的。版本号


向客户端写一个Cookie:HttpServletResponse.addCookie(Cookie c)
相当于向客户端写了一个响应头Set-Cookie



服务器通过HttpServletRequest.getCookies() 获取客户端提交过来的Cookie。



相关信息:浏览器对一个网站最多能存20个cookie。
 浏览器最多能存300个Cookie。每一个Cookie不能超过4KB

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java Web开发中,通常我们会把jsp文件放在WEB-INF目录下,以保证jsp文件的安全性。但是,这样也会导致jsp文件无法直接通过URL访问。如果我们需要在servlet中跳转到WEB-INF目录下的jsp文件,可以采用以下两种方式方式一:使用RequestDispatcherservlet中,我们可以使用RequestDispatcher对象来跳转到WEB-INF目录下的jsp文件,示例代码如下: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/example.jsp"); dispatcher.forward(request, response); ``` 其中,"/WEB-INF/views/example.jsp"是要跳转的jsp文件路径。 方式二:使用重定向 在servlet中,我们也可以使用重定向来跳转到WEB-INF目录下的jsp文件,示例代码如下: ```java response.sendRedirect(request.getContextPath() + "/WEB-INF/views/example.jsp"); ``` 其中,request.getContextPath()获取的是当前Web应用程序的上下文路径,如"/myapp"。需要注意的是,使用重定向需要在web.xml文件中配置jsp文件的映射路径,示例代码如下: ```xml <servlet> <servlet-name>example</servlet-name> <servlet-class>com.example.ExampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/example</url-pattern> </servlet-mapping> <jsp-config> <jsp-property-group> <url-pattern>/WEB-INF/views/example.jsp</url-pattern> </jsp-property-group> </jsp-config> ``` 其中,url-pattern标签中的路径"/example"是servlet的访问路径,可以根据实际情况修改。需要注意的是,这种方式会暴露WEB-INF目录下的jsp文件路径,不太安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值