第一:基本概念
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>
相关推荐
2. JSP指令和动作:例如`<%@page>`、`<jsp:include>`、`<jsp:forward>`等,它们的作用和使用场景。 3. JSP内置对象:如request、response、session、application等,它们的功能和如何使用。 4. EL(Expression ...
- **指令元素**:控制JSP的行为。 - **动作元素**:用于插入动态内容。 ##### 5.3 JSP注释 - `注释内容 --%>`:JSP页面注释,在客户端不会显示。 - `<!-- 注释内容 -->`:HTML注释,可以在客户端显示。 ##### 5.4 ...
通过`<jsp:include>`标签将分页组件包含到页面中。 **8.3 使用jsp:include包含分页显示组件** 重复上述步骤,确保分页组件正确显示。 #### 九、使用SmartUpload上传下载文件 **9.1 使用smartupload进行文件上传*...
在Java Web开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作,将SQL语句与Java代码解耦。...同时,由于分页逻辑被封装在标签中,使得页面和控制器的代码更加清晰,符合MVC架构的设计原则。
6. **JSP内置对象**:JSP内置对象是预定义的Java对象,可以直接在JSP页面中使用,如`request`、`response`、`out`、`pageContext`、`session`、`application`、`config`和`page`。它们分别对应于HTTP请求、响应、...
- JSP包含外部文件:<jsp:include>和<%@ include %>。 - errorPage:处理页面错误跳转。 10. **J2EE相关知识** - J2EE、J2SE和J2ME的区别:J2EE为企业级应用,J2SE为桌面应用,J2ME为移动设备应用。 - ...
5. **JSP中包含外部文件**:使用`<%@ include file="...">`或`<jsp:include page="...">`标签。 6. **errorPage的作用**:用于指定在出现异常时跳转的页面。 7. **使用JavaBeans**:在JSP中定义Bean并使用`jsp:...
5. **Jsp中包含外部文件**:可以使用`<%@ include file="filename"%>`或`<jsp:include page="filename" />`。 6. **errorPage的作用**:用于指定当出现异常时应该转向哪个页面。 7. **使用JavaBeans**:在JSP中...
JSP 内置对象包括 pageContext、request、session、application、out、exception、config、page 等,各对象的作用不同。 五、Session 对象的作用 Session 对象的作用是维护客户端的状态信息,因为 HTTP 协议是无...
- **使用<jsp:include>标签**:动态包含文件。 - **使用<c:import>标签**:静态包含文件。 #### 6. Jsp中的errorPage - **errorPage**:用于指定当出现异常时,跳转到哪个页面进行错误处理。 #### 7. 在JSP中使用...
- 分页通常使用Page对象或查询参数实现,效率优化涉及缓存、连接池等。 - EJB(Enterprise JavaBeans)包括Session Bean和Entity Bean,分别处理业务逻辑和持久化。 以上只是部分知识点的概述,实际面试中会深入...
包括页面间的参数传递、hidden表单域的作用、jsp的内置对象、request和session的作用、jsp动作、servlet API中的forward和redirect、class.forName的作用、分页的实现、cookie被禁止后使用session、项目开发的阶段、...
5. 分页通常使用游标查询和偏移量来实现。 6. Struts是MVC框架,工作流程涉及ActionForm、Action、ActionForward等。 7. TCP可靠,UDP不可靠;链表动态扩展,数组静态;堆栈后进先出,堆用于优先级队列。 8. EJB...
- `<jsp:include page="relativePath" flush="true"/>`:在运行时动态包含文件。 #### 6. Jsp中errorPage的作用 - 定义当发生错误时跳转到的错误处理页面。 #### 7. Jsp中使用JavaBeans - 创建JavaBean类,实现`...