request和response

1.Servlet的Request对象:处理客户端请求信息。一次请求对应一个request对象。
     
    1.1:getParameter(String name);//通过表单元素name属性名获得表单元素value属性值。
    1.2:getParameterValues(String name);//通过表单元素name属性名获得表单元素的一组value            属性值。
    1.3:setAttribute(String name, Object o);//按key-value方式将值存在一次请求范围内
    1.4:getAttribute(String name);//按Key名获取请求范围内存的Value值。
    1.5:removeAttribute(String name);//按Key名移除请求范围内存的一对Key-value对。
    1.6:setCharacterEncoding(String env);//设置post方式请求的字符编码。
    1.7:getCookies();//获取客户端所有的cookies信息。
    1.8:getMethod();//获取客户端请求的方式,get/post/put
    1.9:getSession();//获取当前Session对象
    1.10:getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) ;//实现页面跳转的同时,将当次请求对应请求对象和响应传递过去。

2.Servlet的Response对象:处理客户端响应信息。一次响应对应一个response对象。
     
    2.1:getWriter() ;//获取打印流对象
    2.2:setCharacterEncoding(String charset);//设置响应的字符编码
    2.3:setContentType(String type);//设置响应的内容类型
    2.4:addCookie(Cookie cookie);//将信息以cookie的形式通过浏览器存储到客户端
    2.5:sendRedirect(String location);//实现页面跳转,重定向
    2.6:setHeader(String name, String value) ;//设置响应头部信息

3.get VS post
    3.1:get提交会将页面提交的信息以参数的形式在URL后面显示出来;
        post提交不会将页面提交的信息在URL后面显示出来;

    3.2:get提交不安全;post提交安全。

    3.3:get方式提交表单速率快,post方式提交表单速率慢。

    3.4:get提交的方式将页面的信息以参数的形式在URL后面拼接传到后台,而每个浏览器对URL                的长度有限制,所以get提交页面信息长度有限制;
        post提交的方式将页面的信息在请求体中传到后台,所以页面信息长度无限制;

4.乱码问题:
    4.1:post请求乱码:在接收请求数据之前用
        //处理post请求的乱码
        request.setCharacterEncoding("utf-8");
    
    4.2:get请求乱码:
        4.2.1:将乱码的变量用String的构造一个一个处理:
                //处理get请求的乱码
               uname=new String(uname.getBytes("ISO-8859-1"), "utf-8");
        4.2.2:(扩展):在Tomcat的Server.xml文件中的http端口号的地方加一名字符编码的处理。
                URIEncoding="UTF-8";

    4.3: 响应乱码:
        4.3.1:在响应内容之前设置:
            //设置响应的内容类型
            response.setContentType("text/html;charset=UTF-8");
        4.3.2:在响应内容之前设置:
                //设置响应的编码方式
               response.setCharacterEncoding("utf-8");

5.转发 VS 重定向
      
    
    5.1:转发:request.getRequestDispatcher("页面地址").forward(request, response);
        重定向: response.sendRedirect("页面地址");

    5.2:转发后URL不变;重定向后URL变了;

    5.3:转发在服务器端起作用,客户端只发送了一次请求。
        重定向在客户端起作用,客户端发送了两次请求。

    5.4:转发后请求对象中数据共享;重定向后请求对象中数据不共享。

6.了解验证码
    6.1:自己画验证码:
        eg://声明两个变量存验证码的宽高
        int width=120;
        int height=40;
        
        //创建内存图像对象
        BufferedImage bimg=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        
        //获得图像的画笔
         Graphics gp=bimg.getGraphics();
         //设置画笔颜色
         gp.setColor(Color.blue);
         //填充图像的背景颜色
         gp.fillRect(0, 0, width, height);
         
         
         //设置画笔颜色
         gp.setColor(Color.YELLOW);
         //设置画笔的字体
         gp.setFont(new Font("宋体", Font.BOLD, 30));
         //声明一个数组存可能作为验证码的字符
         String[] s1= {"1","2","3","a","b","e","我","中","人"};
         //声明字符串存验证码
         StringBuffer sb=new StringBuffer();
         //循环生成四个验证码
         for (int i = 0; i <4; i++) {
            int index=(int)(Math.random()*s1.length);
            //生成的验证码字母为
            String code1=s1[index];
            //将生成的验证码写入到图像上
            gp.drawString(code1, i*20+10, 30);
            //将每次生成的字母存到sb中
            sb.append(code1);
        }
         
         //存储生成的验证码,用Session会话对象存
         request.getSession().setAttribute("checkcode", sb);
         
         //在图像画干扰线
        //设置画笔颜色
         gp.setColor(Color.red);
         for (int i = 0; i < 10; i++) {
            gp.drawLine((int)(Math.random()*width), (int)(Math.random()*height), (int)(Math.random()*width), (int)(Math.random()*height));
        }
         
         //将生成的验证写到客户端
         ImageIO.write(bimg, "jpg", response.getOutputStream());

    6.2:(扩展)用第三方Jar包生成验证码ValidateCode.jar
        

7.Jsp:Java Server page,java服务器端页面。jsp页面编译后也是Servlet,所以jsp和Servlet属于    同一个祖先。一般咱们用Jsp作前端页面。
    Jsp的六个重要组成部分:
        7.1:静态页面:在jsp页面可以直接写html代码(包括css,js);
        7.2:小脚本:<% Java代码 %>
            eg:<!-- java的小脚本 -->
    <%
        System.out.println("这是一个Java小脚本");
        
    %>

        7.3:表达式:<%=输出内容 %>
            eg:<!-- 表达式 -->
                <%="当前日期:"+getDate(new Date()) %>

        7.4:指令:<%@   %>导包,指定页面的属性,导标签库。
        7.5:声明(了解):用来声明一个方法。<%!   %>
            eg:<!-- 声明 -->
    <%!
        String getDate(Date d){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
             return sdf.format(d);
        }
    %>

        7.6:注释:
                <!--html注释-->查看源码时html注释页面上看到
                在小脚本可以用Java的//,/* */
                <%-- Jsp注释 --%>查看源码时jsp注释页面上看不到


 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值