request和response

1.绝对路径访问

使用http开头,包含 端口号  IP地址,访问路径  可以跨服务器访问

2.根路径的访问  /开始  紧跟项目名称+访问地址   / 代表的是当前的服务器(只能访问本地服务器)

3.相对路径1,  ./  代表同级    ../  代表上一级  只能访问本地服务器的项目,需要去掉base头

4.相对路径2, 用base的形式只能访问当前项目,同一服务器下的其他项目也不行

地址使用的原则:

1.如果访问的是其他服务器中的项目,选择绝对路径

2.如果访问的是同一个服务器中的不同项目,建议使用跟路径

3.如果访问的是同一项目中的文件,建议使用base路径

客户端控制的跳转的方式:

1.URL地址     2.超链接     3.表单的提交

服务器端控制的跳转方式

1. 转发     2.重定项

转发和重定项的区别  ResourceDispatcher   \  Redirect

1.语句不同:

转发:request.ResourceDispatcher("地址").forward(request,response);

重定项:resp . sendRedirect("地址")

2.URL中的地址不同

转发:路径是转发之前的路径 (没有新的页面请求,服务器内部的转发)

重定项:是重定项之后的路径(因为进行了新的请求)

3.是否共享数据

转发:共享数据(内部用同一个请求)

重定项:不共享数据(用不同的请求,请求和请求之间是无记忆的)

4.实现的原理不同

转发:1.没有产生新的请求,是用同一个请求,直接在服务器内部

转给另外的一个jsp

    2.因为没有新的请求,所以数据可以共享,因为用的同一个request

    3.因为没有新的请求,所以浏览器没有新的地址,使用之前的地址

重定项:1:产生了新的请求

2:因为有了新的请求,请求和请求之间是无记忆的,数据无法共享

3:因为有新的请求,所以浏览器可见,所以URL地址是新的

5.效率不同

转发:效率高

重定项:效率低

6.跳转的范围不同

转发:只能跳转到本地服务器

重定项:可以跳转拿到任意的位置

7.是否重复提交表单数据

转发:重复提交表单的数据

重定项:不会重复提交表单的数据

8.书写的路径不同

绝对路径:

转发:不支持绝对路径

重定项:支持绝对路径

跟路径:

转发:/ 在转发当中代表的是当前项目的名称,只有url-pattern和 /代表的是当前项目

重定项:/ 代表的是当前的服务器

相对路径:

都支持相对路径

编写的时候,无论转发和重定项,都使用    根路径    写地址

9. 是否经过滤器过滤

转发不经过过滤器过滤(默认情况)

重定项经过过滤器

重定项和转发选择的依据:

1.在后台想要跳转到其他服务器中只可以用重定项

2.跳转之后的页面时候如果需要携带数据,必须使用转发

3.是否涉及表单数据的重复提交,不需要重复提交,必须用重定项

WEB-INF 下面的文件是不可以直接访问的,这样是为了提高代码的安全性,如果要访问可以用转发的形式来访问

1.通过  动作标签,进行动态引入,<jsp:forward  page = ''WEB-INF/time.jsp'></jsp:forward>

2.通过内部转发的形式  request.getRequestDispatcher("转发的地址").forward(req,resp);

Request中的更多的信息:

1.请求头的信息,String next = reg.getHeaderNames(); 得到请求头的名字

reg.getHeader(next); 通过传入头的名字,拿到请求头对应名字的内容

2.URL中对应的信息

     1.scheme  是协议       2.serverName() 是服务器IP地址    

        3.servletPath() 是servlet的路径     4. ContextPath 是上下文路径也是 服务器路径

 5.URL得到的是全路径,绝对路径     6.URI得到的是   根路径

 7. getMethod() 得到使用的是post还是get传输

 8.getQueryString() 得到 URL地址中  ?  后面的内容

3. 获得多值的操作

String [] values = req.getParameterValues("hobby");

4. 获得远程和本地的服务

req.getRemoteAddr()+req.getRemoteHost()+req.getRemotePort(); 获得远程信息

req.getlocalAddr()+ req.getLocalName()+req.getLocalPort(); 获得贝蒂服务器的信息

5. 获得其他对象,重点

1.获得session对象

HttpSession session = req.getSession();

2.获得上线文对象

ServletContext   servletContext = req.getServletContext();

= this.getServletContext();

3.获得浏览器上所有的cookie对象

Cookie [] cookies = req.getCookies();

6.其他操作方法,重点

req.setAttribute("name","zs");

req.getAttribute("name");

//解决post乱码

req.setCharacterEncoding("UTF-8");

//转发

//req.getRequestDispatcher("").forward(req, resp);

7. Response对象学习

         resp.setCharacterEncoding("utf-8");

//指定响应页面的编码

resp.setContentType("text/html;charset=utf-8");

//重定向

//resp.sendRedirect("");

//获得out对象

PrintWriter out = resp.getWriter();

//把Cookie对象保存到response中

//resp.addCookie(cookie);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值