Javaweb学习笔记6 jsp页面元素
1. jsp页面元素
a。脚本
1. <% %> 定义局部变量
2.<%! %>定义全局变量以及方法
3. <%= 输出表达式 %>输出表达式(无分号,因为不是输出语句,而是表达式)
4.<%@ %>指令有很多种,
-page指令 位置 写在网页开始 属性有 language jsp import pageEncoding contentType
- include指令 taglib指令
5. <!-- -->html 在浏览器源代码中可见
// /* */ java
<%- -%>
2 jsp内置对象
该对象不用new即可使用。有九大内置对象
2.1 out 向客户端输出内容
2.2 request 请求对象 存储 客户端向服务端发送的请求信息
常见方法 2.2.1 String getParameter(String name) 根据请求的字段名返回字段值
2.2.2 getParameterValues 返回数组,常用chatbox
2.2.3 void setCharacterEncoding(" utf-8") 设置请求编码。对方解析时需要知道你是什么编码。如果不设置则跟着tomcat默认。在tomcat7 以及7以前默认ISO-8859-1,之后默认utf-8
2.2.4 getRequestDispatcher("a.jsp").forward(); 请求转发
2.2.5 getServerContext() :获取项目的ServletContext对象
2.3response 响应对象,封装响应信息
void addCooike(Cookie cookie )服务端向客户端增加一个cookie对象
void sendRedirect(String location ) throws IOException :页面跳转的一种方式
void setContextType(String type):设置服务端响应编码(设置服务端content type类型)
//response.sendRedirect("succees.jsp");重定向会导致数据丢失
//重定向是response提供的
//转发是request提供的,数据保留,并且地址栏没有改变,仍然保留转发时的页面
request.getRequestDispatcher("succees.jsp").forward(request, response);
请求转发和重定向的区别 请求转发 重定向
地址栏是否改变 不改变(check.jsp) 改变(succees.jsp)
是否保留第一次请求时的数据 保留(内部转移数据安全) 不保留
请求的次数 一次(地址栏都不变) 两次(不保留必然两次)
2.4 session
session 存放于客户端(是内置对象,使用不用new),
而cookie存在于客户端(不是内置对象,使用需要new)作用 提高访问效率,但是安全性较差cookie 就是key:value。cookie是是由javax.servlet.http.cookie 类产生的
构造方法 publlic Cookie(String key,String value)
String getName():获取name
String getValue()获取value
coid setMaxAge(int expiry) 设置最大有效期,单位是秒
cookie 是由服务端产生的,由服务端给予客户端。
相当于本地缓存的作用,服务端发送给客户端
添加cookie response.addCookie(Cookie cookie )
转发cookie(转发,重定向)
获取cookie request.getCookies()
增加cookie是response,获取是request
Cookie cookie = new Cookie()
压着ctrl键进去,发现该类是public class javax.servlet.http.Cookie implements java.lang.Cloneable, java.io.Serializable
a. 服务端增加cookie :response对象,客户端获取对象:request对象
b.不能直接获取某一个单独对象,只能一次性将所有的cookie对象拿到,
通过F12可以发现,除了自己设置的Cookie对象外,还有一个名为JSESSION的Cookie
2.5pageContext
2.6application
2.7config
2.8page
2.9expection
用out.println不会新起行,新行要用<br/>
超级痛苦的是和教学上打的一样,但我的代码就无法运行成功。
解决办法:清除服务器缓存
重启服务器(谁给我说劳资的jsp修改也需要重启!)
如果先打<% %>然后在里面写了一堆(包含了方法),最后加了“!”变成<%! %>也会报错,因为这个!并没有加上去,请在开始创建时直接加。
检查URL,看路径是否正确
默认,method="get ", 地址栏,超链接都是 get方式 get方式可以在地址栏看到参数(不安全)。地址栏能传送的信息大小有限,有4--5kb,图片音频视频因为太大而报错。
method="post" .该方式在地址栏不显示。(推荐使用)
出现乱码时先分清是get 方法还是post方法
如果是get方式有两种方法
1.0
String name = request.getParameter("uname"); 这种方法即使设置了UTF-8也读取的是乱码,因为Tomcat是7.0,默认是ISO类的编码,所以无法识别。
int age = Integer.parseInt(request.getParameter("uage")); 可以强制将返回show.jsp页面的变量转换成utf-8格式
缺点是很麻烦,每个变量都要修改
2.0
第二个方法:修改serve.xml
在修改端口号的位置新增加,URIEncoding= "UTF-8"
如果是post方式
1.0
request.setCharacterEncoding("utf-8");这一行是解决post乱码的代码
半下午耗这里,表示计算机狗伤不起。