2018-5-24 14:25:15

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>

    

                    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 package com.alibaba.traffic.web; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.InvalidKeyException; 5 import java.security.NoSuchAlgorithmException; 6 7 import javax.crypto.Mac; 8 import javax.crypto.SecretKey; 9 import javax.crypto.spec.SecretKeySpec; 10 11 import org.apache.commons.codec.binary.Hex; 12 特别注意 附件 6 13 /** 14 * @author dongdong.fdd 15 * @date 2018/9/27 上午11:29 16 */ 17 public class T { 18 public static void main(String[] args) 19 throws InvalidKeyException, UnsupportedEncodingException, No SuchAlgorithmException { 20 long timestamp = System.currentTimeMillis() / 1000; 21 String paramValuesStr = "allAMAP-TRAFFIC-BRAIN10" + timestam p;//该值为排好序的参数的参数值拼接结果 22 String clientSecret = "testclientsecret";//该值为申请到的client Secret 23 24 Mac mac = Mac.getInstance("HmacSHA256"); 25 byte[] secretByte = clientSecret.getBytes("UTF-8"); 26 byte[] dataBytes = paramValuesStr.getBytes("UTF-8"); 27 28 SecretKey secretKey = new SecretKeySpec(secretByte,"HMACSHA2 56"); 29 mac.init(secretKey); 30 31 byte[] doFinal = mac.doFinal(dataBytes); 32 byte[] hexB = new Hex().encode(doFinal); 33 34 String digest = new String(hexB, "utf-8");//计算好的签名 26f2042cde2e9ca01d41ecdb27a91fd9b84f0263c411bcb13b195ec589096885 35 System.out.println(digest); 36 37 String resultUrl = "http://et-api.amap.com/index/cityRankin g?adcodes=all&clientKey=AMAP-TRAFFIC-BRAIN&size=10&timestamp="+times tamp+"&digest=" + digest; 38 System.out.println(resultUrl); 39 } 将这段代码使用python实现
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值