JavaWeb总结

1、form表单提交事件和表单按钮点击事件的区别

基础知识:在form表单中,只要点击<input type="submit" value="提交">按钮就会天然的触发表单的提交,但是<input type="button" value="提交">没有这个功能,只有给button绑定点击事件,事件内容是表单提交,表单才会被提交

需求描述1:当表单提交时,触发代码块1的运行,
<form id="form">
    <input type="submit" id="btn">
</form>
给buttn按钮绑定表单提交事件:
$("#form").submit(function(){             
        代码块1
});
注意事项:只有表单被提交时,才可以触发这个事件,只与表单提交有关,与其他无关

需求描述2:给按钮btn绑定点击事件,事件内容是:先提交表单,然后在表单提交时运行代码块2
<form id="form">
    <input type="button" id="btn">
</form>
给buttn按钮绑定表单提交事件:
$("#btn").click(function(){             
    $("#form").submit(function (){
        代码块1;
    });
});

需求描述3:给按钮btn绑定点击事件,在事件内:发送异步请求,在异步请求函数体中执行代码块3:
<form id="form">
    <input type="button" id="btn">
</form>
给buttn按钮绑定表单提交事件:
$("#btn").click(function(){             
    $.get(url,{参数},function(){
        代码块3;
    });
});

2、html和jsp前端页面使用注意事项:

区别1——接受和发送来自Servlet的数据:
html不支持EL和JSTL,也就没法直接接收来自Servlet中通过request和session等共享域分享的数据,要想接收来自servlet的数据,可以通过异步ajax请求的方法通过Servlet的响应json对象获取,也就是对于页面非写死数据,html的页面显示来自Servlet的数据,只能在<script></script>标签中通过javascript(JQuery)中的方法,比如html(), val()等方法对标签对象进行操作;
JSP支持EL表达式和JSTL,可以接受来自Servlet中通过request和session等共享域分享的数据,比较方便;
 
eg:设置地址栏的href属性,JSP中可以直接使用location.href="${pageContext.request.contextPath}/idex.html",而在html中,location.href="http:localhost:8080/day00/idex.html"
$.get(url,{},function (data){

});

3、javascript的BOM常用BOM对象及其属性和方法
① location——地址栏对象:
          location.href=url;   //表示设置当前地址栏地址为url;    此处的url是完全url
        location.reload();//刷新当前页面;
② Window——窗口对象:
         window.alert()    显示带有一段消息和一个确认按钮的警告框。
         window.confirm()    显示带有一段消息以及确认按钮和取消按钮的对话框。
                    * 如果用户点击确定按钮,则方法返回true
                    * 如果用户点击取消按钮,则方法返回false
         ***常用于删除的确认框
           window. setTimeout()    在指定的毫秒数后调用函数或计算表达式。
                    * 参数:
                        1. js代码或者方法对象
                        2. 毫秒值
                     * 返回值:唯一标识,用于取消定时器
          window.clearTimeout()    取消由 setTimeout() 方法设置的 timeout。
          window.setInterval()    按照指定的周期(以毫秒计)来调用函数或计算表达式。
          window.clearInterval()    取消由 setInterval() 设置的 timeout。

4、与maven中pom.xml配置文件相关
①在pom.xml中配置jstl后,还需要在JSP页面配置 <%@ taglib prefix="c" uri=" http://java.sun.com/jsp/jstl/core" %>可以直接使用<c:foreach>等标签;
②在maven中先导入servlet依赖,后创建的过滤器filter,出现java.lang.ClassCastException:
   解决方案:先将servlet在pom.xml中的依赖导入注释,再创建filter顾虑器,再将pom.xml中的servlet的依赖引入

5、大作业需求逻辑路线


6、过滤器相关
    过滤器步骤:
        ①将req和resq进行类型强转:
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response=(HttpServletResponse) resp;
       ②获取URI;
       ③过滤(放行)登录页面;
       ④获取登录的对象User,判断登录状态,如果User ==null ,则跳转到登录页面,如果User!=null,则说明已经处于登录状态,              直接放行 ;

7、在Servlet中request和session共享数据与请求转发和重定向:
     Request和Session都可以共享数据,但是作用域不一样,Request的作用域是一次请求,Session是一次回话(可以是一次或者多次请求);
  •  request共享数据特点:
             1. 作用范围:在一次会话的一次请求中,如果请求发生变化,比如重定向后,共享会失效;
             2. 应用场景:request.setAttribute("msg",user);  //保存数据
                                  request.getRequestDispacher("/index.jsp").forward(request,response);    //请求转发
             3. 服务器开销:
  • session共享数据:
             1、作用范围:一次会话的1次或多次请求之间;
             2、应用场景:request.getSession().setAttribute("msg",user);    //保存数据
                                   request.getRequestDispacher("/index.jsp").forward(request,response);    //请求转发
                                   response.sendRedirect(requset.getContextPath+"/index.jsp");  //请求重定向
             3、系统开销:一方面session数据保存在服务器端,另一方面是多次请求,系统开销相比request会更大
     * 总结:在既可以使用request也可以使用session共享数据,优先使用request,但是为了防止出现混乱,可以选择作用域更大的Session
  • 请求转发特点:
             1、一次请求,在服务器内部进行请求转发,同时可以携带request共享的数据;
             2、URL地址:不会发生变化
             3、系统开销:比较小

8、在Dao层,JdbcTemplate 的对象 template的方法选择:
      ①查询,由返回值类型决定:
            ***  返回值类型为对象,比如Book,选择queryForObject()
                  String sql="select * from books where id = ?";
                  Book book = template.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
             ***  返回值 类型 为List集合,选择query()
                   String sql= "select * from books limit ?,?";
                   List<Book> list = template.query(sql, new BeanPropertyRowMapper<Book>(Book.class), start, pageSize);
             ***  返回值 类型 为int,选择query()
                       String sql="select count(*) from books";
                   Integer integer = template.queryForObject(sql, Integer.class);    
      ②修改,选择update()
                String sql= "update books set name =? ,price=?, pnum=?,category=? where id=?";
                template.update(sql,book.getName(),book.getPrice(),book.getPnum(),book.getCategory(),book.getId());
      ③插入,选择update()
                String sql="insert into tab_favorite values(?,?,?)";
                template.update(sql,rid,new Date(),uid);
       ④删除,选择update()
                String sql="delete from books where id= ?";
                template.update(sql,id);

9、异步和同步请求方式的选择

特点:
        ***异步是网页局部和Servlet进行数据通信,不刷新整个网页,网址不会发生变化,用户感受不到网页的变化;
        ***同步会刷新整个网页
应用场景:
        ***异步请求:
            ①表单提交
            ②搜索
        ***同步请求:
            ①表单提交;
            ②搜索;
            ③超链接;
            ④location.href=""

10、request和response中文乱码的问题
   get请求:
        编解码过程:浏览器utf-8码表第一次编码,再经过http协议ISO-8859-1码表第二次编码,在服务器端处理后,HTTP协议使用ISO-8859-1码表第一次解码,响应到服务器后,再进过utf-8第二次解码,如果中间环节,即HTTP协议已经乱码,后续的解码将不能正确解码;
         处理方式:new String(name.getByte("ISO-8859-1"),"utf-8");
     post请求:
       编解码过程:post请求方式的参数是在请求体中,相对于get请求简单很多,没有经过http协议这一步的编码过程,所以只需要在服务器端,设置服务器解码的码表跟浏览器编码的码表是一样的就行了,在这里浏览器使用 的是UTF-8码表编码,那么服务器端就设置解码所用码表也为UTF-8就OK了,
        处理方式: request.setCharacterEncoding("UTF-8");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值