1.jsp动作元素实例化Javabean:
<jsp:useBean id="myUsers" class="com.po.Users" scope="page"/>
其中scope指的是javaBean作用范围:有四种如下
(1)默认page是本页面(2)request请求范围(3)session会话范围(4)application应用全局范围
后三种是通过HttpRequest/HttpSession/application.getAttribute()方法取得JavaBean对象。
2. JavaBean的赋值和取值
<form action="dologin.jsp?username=yuqun&password=123456" name="loginForm" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2"><input type="submit" value="登录"></td> </tr> </table> </form>提交到下面页面
<h1>setProperty动作元素</h1> <hr> <%--根据表单自动匹配所有的属性--%> <%--<jsp:setProperty name="myUsers" property="*"/>--%> <%--根据表单匹配部分属性--%> <%--<jsp:setProperty name="myUsers" property="username"/> <jsp:setProperty name="myUsers" property="password"/>--%> <%--跟表单无关,通过手工复制属性--%> <%--<jsp:setProperty name="myUsers" property="password" value="123123"/> <jsp:setProperty name="myUsers" property="username" value="yuqun"/>--%> <%--通过url给属性传参赋值--%> <jsp:setProperty name="myUsers" property="username" param="username"/> <jsp:setProperty name="myUsers" property="password" param="password"/> <%--使用传统的表达式获得用户名和密码--%> <%--用户名:<%=myUsers.getUsername()%><br> 密码:<%=myUsers.getPassword() %><br>--%> <%--使用jsp:getProperty获取--%> <jsp:getProperty name="myUsers" property="username"/><br> <jsp:getProperty name="myUsers" property="password"/> </body>
3. http协议的无状态性。服务器不记得你访问过他。得了健忘症。哈哈。
4. jsp状态管理
保存用户的状态的两大机制:session(服务端)和cookie(客户端)。
Cookie:"小饼干”,是Web服务器保存在客户端的一系列文本信息。
Cookie的作用:对特定对象的追踪、保存用户网页浏览记录与习惯、简化登录。
Cookie的安全风险:容易泄露用户信息。
5. jsp中Cookie的创建域使用
创建Cookie对象
Cookie cookie = new Cookie(String key,String value);
写入Cookie对象
response.addCookie(cookie);
读取Cookie对象
Cookie[] cookies = request.getCookie();
6. 利用Cookie制作登录保存用户名和密码实例
(1)表单请求
<% //如果上次已经保存过则显示上次已存在的值 String username = ""; String password = ""; Cookie[] cookies = request.getCookies(); if (cookies!=null&&cookies.length>0){ for(Cookie c : cookies){ if(c.getName().equals("username")){ //使用URLDecoder解码Cookie内存储的中文字符串 username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")){ password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %> <form action="dologin.jsp" name="loginForm" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username" value="<%=username%>"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password" value="<%=password%>"></td> </tr> <tr> <td colspan="2"><input type="checkbox" name="isUseCookie" checked="checked">是否保存用户名和密码为十天</td> </tr> <tr> <td colspan="2"><input type="submit" value="登录"></td> </tr> </table> </form>
(2)是否保存过cookie的判断
<% //设置post请求编码格式 request.setCharacterEncoding("utf-8"); //首先判断用户是否选择了记住登录状态 String[] isUseCookies = request.getParameterValues("isUseCookie"); if(isUseCookies!=null&&isUseCookies.length>0){ //把用户名和密码保存在Cookie对象里面 String username = URLEncoder.encode(request.getParameter("username"),"utf-8"); //使用URLEncode解决无法在Cookie中保存中文字符串问题 String password = URLEncoder.encode(request.getParameter("password"),"utf-8"); Cookie cookie1 = new Cookie("username",username); Cookie cookie2 = new Cookie("password",password); cookie1.setMaxAge(864000); cookie2.setMaxAge(864000);//设置最大生存期限为10天 response.addCookie(cookie1); response.addCookie(cookie2); }else{ //获取已保存的Cookie Cookie[] cookies = request.getCookies(); if (cookies!=null&&cookies.length>0){ for (Cookie c : cookies){ if(c.getName().equals("username")||c.getName().equals("password")){ c.setMaxAge(0);//设置Cookie失效 response.addCookie(c);//重新保存 } } } } %> <a href="userinfo.jsp" target="_blank">查看用户信息</a>
(3)获取Cookie内存的值并显示
<% String username = ""; String password = ""; Cookie[] cookies = request.getCookies(); if (cookies!=null&&cookies.length>0){ for(Cookie c : cookies){ if(c.getName().equals("username")){ //使用URLDecoder解码Cookie内存储的中文字符串 username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")){ password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %> <BR> <BR> <BR> 用户名:<%=username%><BR> 密码:<%=password%><BR>
7. Session和Cookie的区别:
session:在服务器端保存用户数据,session中保存的是object类型,随会话的结束而将其存储的数据销毁,保存重要的信息。
cookie在客户端保存用户信息,保存的是String类型,cookie可以长期保存在客户端,保存不重要的用户信息。
8. include指令
语法:<%@include file="URL”%>
include动作
语法:<jsp:include page="URL" flush="true|false"/ >
page:要包含的页面 flush:被包含的页面是否从缓冲区读取
9. include指令与include动作比较
include指令 include动作
发生作用的时间: 页面转换期间 请求期间
包含的内容: 文件的实际内容 页面的输出
转换成的servlet: 主页面和包含页面转换为一个servlet 主页面和包含页面转换为独立的Servlet
编译时间: 较慢---资源必须被解析 较快
执行时间: 稍快 较慢----每次资源必须被解析
10. forward动作
语法:<jsp:forward page="URL"/>
等同于:request.getRequestDispacher("URL").forward(request,response);
11. param动作
语法: <jsp:param name="参数名” value=“参数值”>常常与<jsp:forward>一起使用,作为其自标签。
例如:<jsp:forward page="login.jsp">
<jsp:param name="email” value=“13394878@qq.com”>
</jsp:forward>