统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:151 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 未分类

请求转发,域共享,重定向,session域共享,重要办法

梦幻书涯
首页 未分类 正文

 

 

1. 端口被占用:

暴力:找到占用的端口号,
并且找到对应的进程,杀死该进程
* netstat -ano,找到对应端口对应的pid,
在到任务管理器中找到进程,在点击pid,
找到相应的pid关闭便可

3. 获取文件的真实(服务器)路径,    //获取这个文件的真实路径
      重点:重点:重点:
   利用
   ServletContext context = request.getServletContext();
   context对象调用这些办法:
         1,src目录下的资源的真实路径必须加("/WEB-INF/classes/文件名称");
   2,web目录下资源访问直接("文件名称");
   3,WEB-INF目录下的资源路径必须加("/WEB-INF/文件名称");

  ServletContext context = request.getServletContext();


String path = JsoupDemo1.class.getClassLoader().getResource(“student.xml”).getPath();

//这个web用不了,getRealPath用这个
String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问

   如果文件不再src,web,web-inf里面的xxx1,xxx2文件中,就不要加,在src,web,web-inf的根根目录中
   就把xxx1文件夹/xxx2文件夹删除了
请求转发:


1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
request.getRequestDispatcher("/successServlet").forward(request,response);
网址栏地址不变

重定向也可以转发到别的页面

HttpSession session = request.getSession();
session.setAttribute("error","抱歉你输入的用户名或者密码错误, 请重新输入");

response.sendRedirect("/Day01_war_exploded/index.jsp");
等价=request.getRequestDispatcher("/index.jsp").forward(request,response);

重定向和请求转发的不同:

1,请求转发不需要加虚拟目录(/Day01_war_exploded)-----
//request.getRequestDispatcher("/index.jsp").forward(request,response);
2,重定向需要加虚拟目录(/Day01_war_exploded)-----
// response.sendRedirect("/Day01_war_exploded/index.jsp");
3,请求转发地址栏不变,重定向地址栏改变
4,转发是一次请求,可以使用request对象来共享数据
5,重定向是两次请求。不能使用request对象来共享数据
6,重定向可以访问其他站点(服务器)的资源
7,转发只能访问当前服务器下的资源


请求转发特点:
1,请求转发不需要加虚拟目录(/Day01_war_exploded)-----
//request.getRequestDispatcher("/index.jsp").forward(request,response);
2,请求转发地址栏不变,

3,转发是一次请求,可以使用request对象来共享数据

4,转发只能访问当前服务器下的资源

重定向特点:
1,重定向需要加虚拟目录(/Day01_war_exploded)-----
// response.sendRedirect("/Day01_war_exploded/index.jsp");

2,重定向是两次请求。不能使用request对象来共享数据

3,重定向可以访问其他站点(服务器)的资源

4,重定向地址栏改变


重点:

使用request对象来共享数据:


3. 共享数据:

域对象: 一个有作用范围的对象,可以在范围内共享数据
1,* request域:
2,* session域;
3,ServletContext域(整体可以共享)

1,       * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
//不支持重定向,支持请求转发


2,        * session域;

1. 获取HttpSession对象:
HttpSession session = request.getSession();
2. 使用HttpSession对象:


3. 原理
* Session的实现是依赖于Cookie的。
* 三个域对象的共享对象方法:
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttitude(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对

细节:

1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
* 默认情况下。不是。
* 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);


3,ServletContext域(整体可以共享)

## ServletContext对象:
1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信
2. 获取:
1. 通过request对象获取
request.getServletContext();
2. 通过HttpServlet获取
this.getServletContext();
3. 功能:
1. 获取MIME类型:
* MIME类型:在互联网通信过程中定义的一种文件数据类型
* 格式: 大类型/小类型   text/html  image/jpeg

* 获取:String getMimeType(String file)
2. 域对象:共享数据
1. setAttribute(String name,Object value)
2. getAttribute(String name)
3. removeAttribute(String name)

* ServletContext对象范围:所有用户所有请求的数据
3. 获取文件的真实(服务器)路径

     src目录下的资源的真实路径必须加("/WEB-INF/classes/

  ServletContext context = request.getServletContext();
1. 方法:String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
System.out.println(b);

String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
System.out.println(c);

String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
System.out.println(a);

提示:
加不加虚拟目录:
* 规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出
* 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
* 建议虚拟目录动态获取:request.getContextPath()
* <a> ,<form> 重定向...
        * 给服务器使用:不需要加虚拟目录
        * 转发路径不需要加
        *重定向需要加

 

 

重要办法:

 

重要办法:
3. 获取文件的真实(服务器)路径,    //获取这个文件的真实路径
      重点:重点:重点:
   利用
   ServletContext context = request.getServletContext();
   context对象调用这些办法:
         1,src目录下的资源的真实路径必须加("/WEB-INF/classes/文件名称");
   2,web目录下资源访问直接("文件名称");
   3,WEB-INF目录下的资源路径必须加("/WEB-INF/文件名称");

  ServletContext context = request.getServletContext();


String path = JsoupDemo1.class.getClassLoader().getResource(“student.xml”).getPath();
String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问

* parse(String html):解析xml或html字符串
* parse(URL url,int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

* getElementById(String id):根据id属性值获取唯一的元素对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute( String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合
* String attr(String key):根据属性名称获取属性值   


获取文本内容
* String text():获取文本内容
* String html():获取标签体的所有内容(包括字标签的字节串内容)

1. 获取请求方式 :GET
* String getMethod()
2. (*)获取虚拟目录:/day14
* String getContextPath()
3. 获取Servlet路径: /demo1
* String getServletPath()
4. 获取get方式请求参数:name=zhangsan
* String getQueryString()
5. (*)获取请求URI:/day14/demo1
* String getRequestURI():  /day14/demo1
* StringBuffer getRequestURL()  :http://localhost/day14/demo1
* URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
* URI:统一资源标识符 : /day14/demo1     共和国

6. 获取协议及版本:HTTP/1.1
* String getProtocol()     7. 获取客户机的IP地址:
* String getRemoteAddr()

2. 获取请求头数据
* 方法:
* (*)String getHeader(String name):通过请求头的名称获取请求头的值
* Enumeration
<String> getHeaderNames():获取所有的请求头名称

    1. String getParameter(String name):根据参数名称获取参数值 username=zs&password=123
    2. String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game
    3. Enumeration
    <String> getParameterNames():获取所有请求的参数名称
        4. Map
        <String
                ,String[]> getParameterMap():获取所有参数的map集合 * 中文乱码问题:
            * get方式:tomcat 8 已经将get方式乱码问题解决了
            * post方式:会乱码
            * 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");

            1. void setAttribute(String name,Object obj):存储数据
            2. Object getAttitude(String name):通过键获取值
            3. void removeAttribute(String name):通过键移除键值对 4. 获取ServletContext:
            4 ServletContext getServletContext() //获取所有参数
            Map
            <String
                    , String[]> map = request.getParameterMap();

                设置状态码:setStatus(int sc)
                设置响应头:setHeader(String name, String value)


                3. 告诉浏览器响应体使用的编码
                response.setContentType("text/html;charset=utf-8");


                1. 创建Cookie对象,绑定数据
                * new Cookie(String name, String value)
                2. 发送Cookie对象
                * response.addCookie(Cookie cookie)
                3. 获取Cookie,拿到数据
                * Cookie[] request.getCookies() 3. 实现原理
                * 基于响应头set-cookie和请求头cookie实现 4. cookie的细节
                1. 一次可不可以发送多个cookie?
                * 可以
                * 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
                2. cookie在浏览器中保存多长时间?
                1. 默认情况下,当浏览器关闭后,Cookie数据被销毁
                2. 持久化存储:
                * setMaxAge(int seconds)
                1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
                2. 负数:默认值
                3. 零:删除cookie信息

                1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
                2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
                3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。 4. JSP的内置对象

 

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2019-9-6,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
RMI入门教程
« 上一篇
请求体数据和响应体数据,响应和请求原始体,请求转发,重定向,session域共享
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
Array

日历

热门文章