JSP的内置对象一

本文详细介绍了JSP的九大内置对象,包括out、request、response、session等,并提供了实例代码来展示这些对象如何在实际应用中使用。文章还探讨了转发与重定向的区别以及session的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP的九大内置对象:

  1. page
  2. out
  3. request
  4. response
  5. session
  6. application
  7. page context
  8. config
  9. exception
一:out(输出)
       out.jsp
  <body>
    //reg.jsp里面的链接
    <%String id=request.getParameter("id");
      String name=request.getParameter("name");
      out.print("id="+id+"<br>");
      out.print("name="+name+"<br>");
    %>
    <hr>
    <%
       int[] n={60,70,80};
       for(int i=0;i<n.length;i++){
         out.print(n[i]);
       }
     %> 
     <hr>
     <%
       int[] n1={60,70,80};
       for(int i=0;i<n1.length;i++){ 
         out.println(n1[i]);  
       }
     %>
     <hr>
     <%
       int[] n2={60,70,80};
       for(int i=0;i<n2.length;i++){
         out.print(n2[i]+"<br>");
       }
     %>
  </body>

id=null
name=null

607080 
60 70 80 
60
70
80

二:request(请求)

       request对象主要用于处理客户端请求

        

reg.jsp

  <body>
    <form action="doreg.jsp" method="post">
    <a href="out.jsp?id=1&name=yl">我是链接</a><br>
           姓名:<input type="text" name="username"  /><br>
           密码:<input type="password" name="password"  /><br>
           爱好:<input type="checkbox" name="aihao" value="篮球"  />篮球
           <input type="checkbox" name="aihao" value="攀岩"  />攀岩
           <input type="checkbox" name="aihao" value="游泳"  />游泳<br>
          <input type="submit"  value="提交"  />
    </form>
  </body>


doreg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
//设置请求的编码格式,该方式只对post提交有效,防止中文乱码
request.setCharacterEncoding("utf-8");
//获取表单数据
String username = request.getParameter("username");//请求获取参数
String password = request.getParameter("password");
String[] info = request.getParameterValues("aihao");//请求获取多个值对应的数据
out.print("姓名:"+username+"<br>");
out.print("密码:"+password+"<br>");
String str="";
for(int i = 0;i<info.length;i++){
   str += info[i]+" ";
}
out.print("爱好:"+str);
%>

乱码的解决方法:





在方式3中,端口号也是在那修改(myeclipse内置Tomcat与Apache Tomcat 端口冲突时修改)


二:request与response中转发与重定向

        response对象用于响应客户请求并向客户端输出信息 

        response 对象常用方法
            void sendRedirect (String location):将请求重新定位到一个不同的URL,即页面重定向

 

Login.jsp
  <body>
    <form action="doLogin.jsp" method="post">
           姓名:<input type="text" name="name"  /><br>
           密码:<input type="password" name="password"  /><br>
     <input type="submit" value="提交">  
    </form>
  </body>

doLogin.jsp

<%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
     String password = request.getParameter("password");
     //这是转发的方式
    /*
    * if(name.equals("yl")&&password.equals("123456")){     //equals等于
       request.getRequestDispatcher("success.jsp").forward(request, response); 
       //getRequestDispatcher 获取请求调度程序   forward 转发  response 响应
}else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } */ //这是重定向的方式 /* * if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp");
       // sendRedirect 发送重定向
}else{ response.sendRedirect("Login.jsp"); } */ //如果重定向要传值,则 /** if(name.equals("yl")&&password.equals("123456")){ response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ //如果想要弹窗,则 /** *if(name.equals("yl")&&password.equals("123456")){ //弹窗不会出现,因为来不及弹窗,加上链接即可 // out.print("<script>alert('登陆成功');Location.href="success.jsp"</script>"); response.sendRedirect("success.jsp?name="+name); }else{ response.sendRedirect("Login.jsp"); } */ %> </body>


转发与重定向的区别:

 转发:

  • 浏览器地址栏不显示跳转后的路径,更加安全
  • 转发是服务器内部的跳转页面,它不能访问外部的资源
  • 转发多个页面认为是一次请求,可以获得一次请求的所有参数的值
重定向:
  • 重定向地址栏可以显示跳转的路径
  • 重定向后可以访问项目外的资源
  • 重定向相当于重新发送了一次新的请求,前面请求的数据全部丢失

三、session(会话)

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

       session的常用方法:

问题:一个session对应一个窗口,那么通过超链接打开的窗口是否也是新的session呢?

分析:

  • 每个session对象都与浏览器一一对应,重新开启一个浏览器,相当于创建一个session对象
  • 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

doLogin.jsp

  <body>
    <%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
     String password = request.getParameter("password");
    
       //这是转发的方式
     if(name.equals("yl")&&password.equals("123456")){
     
       //在session中存放用户信息
       session.setAttribute("user", name);
       
       //设置session过期时间(这里的时间单位是秒)
       //setMaxInactiveInterva 设置最大非活动间隔
session.setMaxInactiveInterval(20); request.getRequestDispatcher("success.jsp").forward(request, response); }else{ request.getRequestDispatcher("Login.jsp").forward(request, response); } %> </body>


 在web.xml中也可以设置session

</welcome-file-list>
  <!-- 这里的时间单位是min  -->
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>


success.jsp

<body>
	<% 
  String name=(String)session.getAttribute("user");
  if(name==null){
     response.sendRedirect("Login.jsp");
  }
  
   %>
	欢迎<%=name %>登陆成功!
	<br>
	<a href="exit.jsp">安全退出</a>
</body>

exit.jsp

 <body> 
    <%
     session.removeAttribute("user");   
    // removeAttribute 删除指定名称所对应的对象
     response.sendRedirect("Login.jsp");
     %>
 </body>

在系统中增加登录验证,如果session中不存在该用户的登录信息,转入登录页面

checkLogin.jsp

 <% if(session.getAttribute("user")==null){
  response.sendRedirect("Login.jsp");
  } %>


如果session中不存在该用户的登录信息,转入登录页面

如果session中不存在该用户的登录信息,转入登录页面




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值