(二十).javaweb笔记

1.第一次访问jsp流程图
在这里插入图片描述
第二次访问jsp文件直接调用service()方法。

2.sendRedirect与forward的区别
1).request.getRequestDispatcher()是请求转发,前后页面共享一个request ;
response.sendRedirect()是重新定向,前后页面不是一个request。

2).RequestDispatcher.forward()是在服务器端运行;
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;
而HttpServletResponse.sendRedirect()则不是。

3).运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何 URL。

forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,
同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute(“name”,name)来传至下一个页面.

重定向后浏览器地址栏URL不变.
只有在客户端没有输出时才可以调用forward方法。如果当前页面的缓冲区(buffer)不是空的,那么你在调用 forward方法前必须先清空缓冲区。

4).表单的action跳转页面的方式是重定向,所以储存的Attribute值会丢失。

2.指令include 和 request.Dispatcher 的 include的
区别在这里插入图片描述

3.中文传参乱码问题
在jsp中会出现两种编码错误。一种是页面编码错误,一种是数据编码错误。

1)、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。
2)、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。
3)、request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求进行重新编码的编码。
4)、response.setCharacterEncoding(“UTF-8”)的作用是指定对服务器响应进行重新编码的编码。
response.setCharacterEncoding(“UTF-8”)的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在JSP中设置response.setCharacterEncoding (“UTF-8”)或者response.setCharacterEncoding(“GBK”),浏览器均能正确显示中文(前提是你发送到浏览器的数据编码是正确的,比如正确设置了pageEncoding参数等)。

5).对于表单中提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。

6.)对于URL提交的数据,在接收数据的JSP中request.setCharacterEncoding参数是不行的,因为在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码)。要解决该问题,可以修改tomcat配置、手动对链接进行编码(或者直接用标签,标签自带自动节码功能)

7).Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,在http解析时做了严格限制。
RFC3986文档规定,请求的Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。

如果要使用这些特殊字符,并不是绝对不可以。

本段总结摘抄博文,详情请访问
https://blog.csdn.net/aic1999/article/details/80462626
https://www.sogou.com/link?url=hedJjaC291OV7dVab-QfvHtdr0qpeLU_CSp7GIEOglWQU5NK2Z-LBQ

4.在使用 c3P0连接池时 出现
在这里插入图片描述
查了一下说是数据库驱动包编码与页面不匹配,在uri后面加上
useUnicode=true&characterEncoding=utf8 参数发现还是不行 报了另一个错

在这里插入图片描述
说是数据库创建不了连接 很奇怪 最后查了很久 可能因为数据库和数据库驱动版本不同导致(数据库是Mysql 8 数据库驱动5),去官网下了一个数据库驱动8的,将驱动改为com.mysql.cj.jdbc.Driver,然后接着会出现时区错误,需要将连接URL加上&serverTimezone=UTC 最后终于不报错了
总结:平时在使用数据库驱动时,虽然和数据库版本不一样,但是也同样可以获得连接,但是在测试连接池时出现这种情况,可能是连接池需要比较高的要求???

  1. target=showname 就是这个链接是提交给框架(frameset)name=showname

在页面之间加入(XHTML:),就会使该页面所有链接均为新开窗口打开。

是一个链接基准标记,用以改变页面中所有链接标记的参数默认值。

引申应用:

网易

那么不管这个页面放置在任何域下面,该链接都会指向http://www.163.com/

转载自
https://www.sogou.com/link?url=DSOYnZeCC_rR_TP93bdO6EEUqERVuzTaJiaC3m8ESMrC1uVv70XakqSJEPau3auG0ztd7q5nl6o

6.如果表单传递方式为post ,但还需要传递其他参数,可以使用 input 标签 value设置 ,然后将input type属性设置为hidden即可。

7.超链接中不可随意加空格,EL表达式也一样,加空格可能会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值