您的位置:首页 > 产品设计 > UI/UE

内置对象(out,resquest,response)及对话session之间的关系

2017-10-28 10:46 232 查看
   回顾:

<%! 声明变量 %>

<%--jsp注释--%> 浏览器查看源代码不可见

<!--html注释--> 浏览器查看源代码可见

<%= 能算出一个结果的表达式(如待返回值的方法,具体的变量)%>

<% java代码 %> (小脚本)
*jsp页面在执行时,被翻译成一个类,编译执行,结果以html方式返回。
问题:

<%! %>中的变量是全局变量(类的成员变量:只要对象在,它就在)

<% %>中的变量是方法中的局部变量(方法执行完就销毁)

jsp页面被访问时,会被tomcat容器自动转换成java类,并编译,然后自动构建对象并运行里面的方法。

此对象,只要tomcat不关闭,它就一直在那里。

内置对象:已经被容器创建好的对象,直接可以用。

1、out:用于输出(对象用于在web游览器内输出信息)----print(输出各种类型数据)

2、request:可以封装用户请求(代表了客户端的请求信息,主要用于通过HTTP传送到服务器的数据)

            方法:(1).String getParameter(String name):根据页面表单组件名获取提交的数据,或者是URL地址栏中变量

                       (2).String [] getParameterValues(String name):根据页面表单组件名获取组件对应多个值的用户请求(返回是数组)//或者地址栏中的数据

                  (3).void setCharacterEncoding(String character):指定每个请求的编码,在调用request.getParameter之前设定,用于解决用户乱码问题

                  (4).request.getRequestDispatcher(String path)返回一个java.servlet.requestDispatcher对象,该对象的forward方法用于转发请求
                  (5)setAttribute(),//getAttribute()方法,因为request本身是一个作用域对象,所以可以存放数据,也可以取数据
                 (6)在servlet类中,  Printwriter out =request.getWriter()方法用于得到out对象的地址
                              Httpsession session=request.getsession()方法用于得到session会话的地址
                             ServletContext application=getServletContext();
                               application.setAttribute()//getAttribute(),四大作用域都有这个方法,用于存放数据,读取数据   

表单提交方法(method):

post:地址栏中不会暴露请求的数据

get:会
3、(重新定向)response(作答,回应,响应):封装服务器的响应,发给客户端。

response.sendRedirect("success.jsp");//重新定向另一个页面

response.setCharacterEncoding("utf-8");//编码方式

response.setContentType("text/html;charset=utf-8");//发回客户的内容类型,客户端直接编译,提高效率
重新定向:意味着让客户端重新发一个请求给服务器。

(客户端访问两次服务器,地址栏有变化)

(和其他资源不相关,新页面中无法获取请求的数据)

请求转发:是服务器自己访问另一个服务器资源,客户端并不知情。

(客户端访问一次服务器,地址栏没有变化)

request.getRequestDispatcher(String url);
 request.getRequestDispatcher("success.jsp").forward(request, response);

//获取了通向另一个页面的请求转发器,并调用forward把对象转给它

区别:reponse是重新定向,但缺点是无法提交数据给另一个界面,常与session对象连用,新页面中可获取请求的数据,request请求转发

跳转与提交

     跳转:一个页面跳向另一个界面,不进行数据提交

     提交:必须发生在表单里,不光提交,还把数据提交给另一个界面

4、一个会话就是浏览器与服务器之间的一次通话,

   它包含浏览器与服务器之间的多次请求、响应过程。

    session对象用来存储有关用户会话的所有信息。

    session对象是一个集合。
    每一个客户端和服务进行会话,服务器都会在自己的内存中,形成一个session对象。

    客户的各自的session之间互不相干。(类似群聊中的小窗口)
    存东西进去:session.setAttribute("name", "admin");

    去东西出来:String name = (String) session.getAttribute("name");

例子:

dolog.jsp

 <%

       String name = request.getParameter("userName");

       String pwd = request.getParameter("pwd");

       if(name.equals("admin")&&pwd.equals("admin"))

       {

          session.setAttribute("uname", name);

          response.sendRedirect("success.jsp");

         // request.getRequestDispatcher("success.jsp")

         //  .forward(request, response); //获取了通向另一个页面的请求转发器

   

         

       }else

       {

          out.print("error");

          response.sendRedirect("error.jsp");

       }

   

   

     %>

success.jsp

 <%

      //从session里面把数据取出来

      String s = (String)session.getAttribute("uname");

      out.print(s+"欢迎你!");

%>

          这里有重要信息 <br>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐