`

j2ee15:jsp04,session的访问控制,分页查询,page include·

    博客分类:
  • j2ee
 
阅读更多

第一:基本概念

1.<script>alert("提示");history.back()</script>:这个是本地的东西,向上一步,因此能看到我们以前填写表单时候的数据
2.<script>alert("提示");location.href=""</script>:这个相当于重定向
3.会话:会话就是客户端和服务器的对话,会话是一个过程(时间段),不是一瞬间。会话是通过请求与响应完成的。
 因此会话就是客户端和服务器的多次请求和响应的过程。(一次请求就是一次发送地址,一次响应就是服务器端对这次请求的响应)
4.再次注意:request,response,session等都可以当成容器
5.session的中文意思是会话。这个session容器封装了客户端与服务器端的多次交互(请求与响应)的数据。也就是说session容器封装了数据。对象也是封装数据的,因此也可以理解成是个session对象
6.session因为能够封装多次交互数据,因此session里面封装的是个集合。这些数据在栈内存中保存着。还有就是session。setAttribute(),这个是个键值对集合。
7.当客户端第一次向服务器端发送请求的时候,服务器会自动开启会话(也就是产生一个session对象),把这个session对象保存在了服务器端的内存中。
   但是这个session对象里不一定有内容。
8.因为session是个过程,因此第一次产生的数据在最后一次会话中也有效。
9.request的转发也能够向下传递内容,但是只限于在服务器端的多次向下,当服务器响应客户端的时候这个request就结束了。
因此,request是一次会话过程,sessoin是多次会话
10.由于在客户端第一次发送请求的时候就会产生一个session对象,也就是在第一次执行request的时候产生了一个session对象,因此使用request对象可以获得session对象。
11.访问控制的实现:判断sessin对象是否保存到了特定的值。也就是在第一个页面使用session.setAttribute来封装值,在第二个页面使用session.getAttribute来获取值,然后判断这个获取的值是不是空,如果是空就进禁止访问。
12.当使用session成功之后,在打开其他浏览器,照样能够访问这个session对象。也就是说一个客户端对应着一个session对象(在bs项目中浏览器就是客户端),也就是说一个浏览器就是一个客户端,因此只要在一个浏览器上就算是一个客户端,因此可以在打开一个窗口访问相同的页面。
  不同的客户端不能共享session里面的数据(也就是换个浏览器就会产生一个新的session对象)
13.session的结束:
       ------1.关闭浏览器的时候当前会话就结束了。但是服务器中的session对象此时还没有消失,因为是在本地电脑关闭的浏览器,因此不会影响服务器端内存的session的存在。
       ------2.session的声明周期小于访问的间隔时间(就是说过一段时间在访问的时候就要重新登陆),其实就是session在服务器端的内存中会定时清空,session消失,默认是30分钟。  session.MaxInactiveInterval(30):最大有限时间
       ------3.session.invalidate() :让当前session对象销毁 。
       ------4.session.removeAttribute():是删除session中指定键,也就是清空(销毁)了session对象里面封装的某一个值。
14.session.getId是获得这个session的id  :说明只要在服务器上产生一个session就会产生一个session的id,
   问:服务器端有很多session的id,服务器端如何判断哪个客户端对应着哪个id的?
   答:服务器端响应客户端的时候除了响应给客户端相应的内容外,还携带着session的id,也就是说session可以跟踪与客户端的会话。
      但是当我们关闭浏览器的时候,服务器端的session对象找不到客户端了,因此不知道把id往哪里传了,但是服务器端的这个session还存在。
15.当很多页面都需要进行访问控制的时候,就要把有关访问控制的代码封装起来,
   此时引入了<%@page include file="路径"%>,这是代码的包含。这个指令是页面包含指令,是在编译的时候进行包含的,先合并代码在执行。
16.分页查询:
    ----1.思想:把sql语句部分进行修改
    ----2.oracle中的两个伪列(任何表都有这两个):rowid:指的是数据的地址,rownum:是从1开始的数据表中数据的行数。
          select student.* ,rownum from student where rownum>3。这样查询查不出来,是因为这个rownum是从1开始的,不是从4开始的,因为使用大于号的话伪列就不是固定的了。
               注意rownum是对查询结果进行编号,不是对表的原始数据进行编号。 因此在使用rownum的时候必须使用小于号,不能使用大于号。
   ---- 3.这是正确的:select * from(
                select student.* ,rownum  rn from student where rownum<=6)
                where rn>3;
            注意:此时的rn是子表中的固定的列了,不是伪列了。
     ----4.分页的两个重要参数:页数和页的大小。pageNum和pageSize,因此出现pageNum*pageSize和(pageNum-1)*pageSize
17.分页跳转到具体页的时候的时候可以去尝试改变表单的action路径,用javascript做
  在跳转到具体页的时候要输入具体的页数,此时最好判断一下输入的是不是数字,用正在表达式。或者用event.keyCode()

 

 

第二:相关代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="checkSession.jsp"%>
<%@ page import="com.dao.*" %>
<%@ page import="com.dao.impl.*" %>
<%@ page import="com.entity.*" %>


<%

String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
  
   <form action="doBatDelete.jsp" method="post" name="myform">
   <table border="1" align="center" >
    <tr>
    
     <th><a href="javascript:document.myform.submit()">批量删除</a></th>
     <th>学号</th>
     <th>姓名</th>
     <th>年龄</th>
     <th>地址</th>
     <th>性别</th>
     <th>电话</th>
     <th>操作</th>
    </tr>
    <%
     int pageNum=1;
     int pageSize=3;
     
     String pn = request.getParameter("pn");
     if(pn!=null)
     {
      pageNum=Integer.parseInt(pn);
     }
     if(pageNum<1)
     {
      pageNum=1;
     }
     
     
     StudentDao dao=new StudentDaoImpl();
     
     //List<Student> stuList=dao.searchAllStu();
     List<Student> stuList=dao.seachStudent(pageNum,pageSize);
     for(int x=0;x<stuList.size();x++)
     {
      Student stu =stuList.get(x);
    %>
      
       <tr>
        <th><input type="checkbox" name="cbks"  value="<%=stu.getSno() %>"/></th>
       <th><%=stu.getSno() %></th>
       <th><%=stu.getSname() %></th>
       <th><%=stu.getSage() %></th>
       <th><%=stu.getSaddress() %></th>
       <th><%=stu.getSsex() %></th>
       <th><%=stu.getStel() %></th>
       <th><a href="doDelStudent.jsp?sno=<%=stu.getSno()%>">删除</a>|
       <a href="showStudent.jsp?sno=<%=stu.getSno()%>">修改</a>
       </th>
      </tr>
    <%
   
     }
     
     %>
    
     <tr>
    
     <th colspan="8">
      <a href="index.jsp?pn=<%=pageNum-1 %>">上一页</a>
      <a href="index.jsp?pn=<%=pageNum+1%>">下一页</a>
     </th>
     
    </tr>
    </table>
    </form>
  </body>
</html>

分享到:
评论

相关推荐

    面试 j2ee jsp 代码与编程题.rar

    2. JSP指令和动作:例如`&lt;%@page&gt;`、`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`等,它们的作用和使用场景。 3. JSP内置对象:如request、response、session、application等,它们的功能和如何使用。 4. EL(Expression ...

    J2EE经典教程

    - **指令元素**:控制JSP的行为。 - **动作元素**:用于插入动态内容。 ##### 5.3 JSP注释 - `注释内容 --%&gt;`:JSP页面注释,在客户端不会显示。 - `&lt;!-- 注释内容 --&gt;`:HTML注释,可以在客户端显示。 ##### 5.4 ...

    山东建筑大学J2EE讲义

    通过`&lt;jsp:include&gt;`标签将分页组件包含到页面中。 **8.3 使用jsp:include包含分页显示组件** 重复上述步骤,确保分页组件正确显示。 #### 九、使用SmartUpload上传下载文件 **9.1 使用smartupload进行文件上传*...

    mybatis自定义分页标签

    在Java Web开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作,将SQL语句与Java代码解耦。...同时,由于分页逻辑被封装在标签中,使得页面和控制器的代码更加清晰,符合MVC架构的设计原则。

    比较常见的java面试题集

    6. **JSP内置对象**:JSP内置对象是预定义的Java对象,可以直接在JSP页面中使用,如`request`、`response`、`out`、`pageContext`、`session`、`application`、`config`和`page`。它们分别对应于HTTP请求、响应、...

    JAVA笔试题,面试题JAVA笔试题,面试题

    - JSP包含外部文件:&lt;jsp:include&gt;和&lt;%@ include %&gt;。 - errorPage:处理页面错误跳转。 10. **J2EE相关知识** - J2EE、J2SE和J2ME的区别:J2EE为企业级应用,J2SE为桌面应用,J2ME为移动设备应用。 - ...

    Java面试题(全面总结)

    5. **JSP中包含外部文件**:使用`&lt;%@ include file="..."&gt;`或`&lt;jsp:include page="..."&gt;`标签。 6. **errorPage的作用**:用于指定在出现异常时跳转的页面。 7. **使用JavaBeans**:在JSP中定义Bean并使用`jsp:...

    JAVA笔试题,面试题(吐血推荐)

    5. **Jsp中包含外部文件**:可以使用`&lt;%@ include file="filename"%&gt;`或`&lt;jsp:include page="filename" /&gt;`。 6. **errorPage的作用**:用于指定当出现异常时应该转向哪个页面。 7. **使用JavaBeans**:在JSP中...

    web项目答辩

    JSP 内置对象包括 pageContext、request、session、application、out、exception、config、page 等,各对象的作用不同。 五、Session 对象的作用 Session 对象的作用是维护客户端的状态信息,因为 HTTP 协议是无...

    最新Java面试大全

    - **使用&lt;jsp:include&gt;标签**:动态包含文件。 - **使用&lt;c:import&gt;标签**:静态包含文件。 #### 6. Jsp中的errorPage - **errorPage**:用于指定当出现异常时,跳转到哪个页面进行错误处理。 #### 7. 在JSP中使用...

    华为与IBM等公司JAVA面试题大全.pdf

    - 分页通常使用Page对象或查询参数实现,效率优化涉及缓存、连接池等。 - EJB(Enterprise JavaBeans)包括Session Bean和Entity Bean,分别处理业务逻辑和持久化。 以上只是部分知识点的概述,实际面试中会深入...

    JavaWeb答辩问题.doc

    包括页面间的参数传递、hidden表单域的作用、jsp的内置对象、request和session的作用、jsp动作、servlet API中的forward和redirect、class.forName的作用、分页的实现、cookie被禁止后使用session、项目开发的阶段、...

    java面试题[基础类].doc

    5. 分页通常使用游标查询和偏移量来实现。 6. Struts是MVC框架,工作流程涉及ActionForm、Action、ActionForward等。 7. TCP可靠,UDP不可靠;链表动态扩展,数组静态;堆栈后进先出,堆用于优先级队列。 8. EJB...

    java面试题大全--java基础,struts,spring,ejb等

    - `&lt;jsp:include page="relativePath" flush="true"/&gt;`:在运行时动态包含文件。 #### 6. Jsp中errorPage的作用 - 定义当发生错误时跳转到的错误处理页面。 #### 7. Jsp中使用JavaBeans - 创建JavaBean类,实现`...

Global site tag (gtag.js) - Google Analytics