jsp笔记

jsp代码提示
右键点击要开发的jsp文件,选择“open with”,然后选择用MyEclipse JSP Editor打开jsp文件,
写jsp代码就会有标签提示了,也可在jsp中任一位置按ALT+/快捷键,也会弹出标签提示框


设置jsp文件默认打开方式:Window->Preferences->Editors->File Associations:
设置jsp网页工程的访问路径:右击项目工程->properties->MyEclipse->Web:修改Web Context-root
1.jsp注释:<%--jsp注释--%>:客户端不可见    // /**/
2.jsp声明 
<%!
String str = "Hello";
int add(int a, int b)
{
return (a+b);
}
%>
3.jsp表达式
<%=表达式%>
<%=add(3,5)%>
3.jsp内置对象
1) out/request/response/session/application(<--常用)  /Page/pageContext/exception/config
out:JspWriter类的实例,
常用方法:println() 、getBufferSize()、getRemaining()返回缓冲区剩余可用大小
isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
close()关闭流
clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常
clearBuffer()清除缓冲区的内容,如果在flush之后调用不会抛出异常
flush()将缓冲区内容输出到客户端
2)request
getParameter(String name):返回单个值
request.getParameterValues(String name):返回一个数组(如checkbox的值)
request.setCharacterEncoding("utf-8");设置字符集,解决中文乱码问题,无法解决URL传递中文的乱码问题。

 修改tomcat中conf中的server.xml中的内容解决URL传递中文的乱码问题。
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf-8" />

  
request.setAttribute(String,Object)/getAttribute
request.getContentType()获取请求体的MIME类型
request.getServerName()获取主机名
request.getServerPort()
request.getRmoteAddr()获取主机ip
request.getRealPath:请求的真实路径
3)response.getCharacterEncoding()
response.setContenType(String type)设置响应的MIME类型
response.getWriter()返回客户端输出字符的一个对象(PrintWriter),打印的信息先于内置对象out
可以通过out.flush()强制输出,保证顺序
response.sendRedirect(String location ) 重定向
4)  请求转发与请求重定向
请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏URL地址不会改变

5)session 对象是HttpSession类的实例。
从一个客户端打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,
称为一个会话,也是一个session的生命周期。


session.getId()
setAttribute(String name,Object value)
setMaxInactiveInterval() :返回两次请求间隔多长时间session被取消(单位秒)
生命周期:
除非本次会话页面都全部关闭后重新访问某个jsp或者servlet将会创建新的会话。
(旧的session 超时后销毁)
session销毁:
Tomcat默认超时时间:30分,可以在web.xml里面配置
session.invalidate();销毁当前会话
6)application对象:
application对象实现了用户间数据共享,可放全局变量。
application开始于服务器的启动,终止于服务器的关闭。
在用户的前后连接或者不同用户之间的连接中,可以对application对象的同一属性进行操作。
setAttribute/getAttribute方法等
7)page对象
page对象就是指当前jsp页面本身。
page.toString()
8)pageContext对象
提供对JSP页面内所有对象及名字空间的访问
JspWriter getOut()
getSession()/getPage()/getRequest()/getResponse()/forward/include(String relativeUrlPath)包含另一文件
9)config对象是在一个Servle初始化时,JSP引擎向它传递信息用.
getServletContext()等
10)exception对象(需要在jsp页面中设置isErrorPage=“true"才能使用
getMessage()/toString()/printStackTrace()/FillInStackTrace()重写的执行轨迹


4.Javabean
Javabean设计原则:公有类、无参的公有构造方法、属性私有、getter和setter方法
1)Jsp动作:
①与存取JavaBean有关的
<jsp:useBean>  <jsp:setProperty>  <jsp:getProperty>
<jsp:useBean id="标识符" class=”java类全名" scope=“作用范围">
<jsp:useBean id="myUser" class="com.javabean.User" scope="session"/>

 <!--根据表单自动匹配所有属性-->
 <jsp:setProperty property="*" name="myUser"/>
 <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名"/>(跟表单关联)
 <jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue"/>(手工设置)
 <jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中的参数名"/>(手工设置)
 
 
 
②jsp1.2开始的基本元素
<jsp:include> <jsp:forward> <jsp:param> <jsp:plugin> <jsp:params> <jsp:fallback>
③jsp2.0新增的动作元素,与Document有关
<jsp:root> <jsp:declaration> <jsp:scriptlet> <jsp:expression> <jsp:text> <jsp:output>
④jsp2.0新增的动作元素,主要用来动态生成XML元素标签的值
<jsp:attribute> <jsp:body> <jsp:element>
⑤JSP 2.0 新增的动作元素,主要用在Tag File中,
<jsp:invoke> <jsp:dobody>


5. 网页的相对路径
 <h1>login.jsp和login_do.jsp都在javabean文件夹中,action路径为(根目录作为起点去访问  

   )./javabean/login_do.jsp</h1>
    <form name="loginForm" action="./javabean/login_do.jsp" method="post">


6.javabean的四个作用范围
1)page:仅在当前页面有效
2)request:可以通过HttpRequest.getAttribute()方法取得javabean对象
3)session:可以通过HttpSession.getAttribute()方法取得javabean对象
4)application:可以通过application.getAttribute()方法取得javabean对象


7.http协议的无状态性:
无状态性是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。
但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道他就是刚才的那个浏览器。
简单的说,就是服务器不会去记得你,所以就是无状态协议。
8.保存用户的状态的两大机制:
1)Session(服务端)
2)Cookie(客户端):
典型应用一:判断注册用户是否已经登录网站
典型应用二:“购物车”的处理
对特定对象的追踪、保存用户网页浏览记录与习惯、简化登录、
安全风险:容易泄露用户信息


Jsp中创建与使用Cookie
创建Cookie对象:
Cookie newCookie = new Cookie(String key,Object value);
写入Cookie对象:
response.addCookie(newCookie);
读取Cookie对象
Cookie[] cookies = request.getCookies();

常用方法:
1)void setMaxAge(int expiry)设置cookie的有效期,以秒为单位
2)void setValue(String value)在cookie创建后,对cookie进行赋值。
3)String getName()获取cookie的名称
4)String getValue()获取cookie的值
5)int getMaxAge() 获取cookie的有效时间,以秒为单位

 String isUseCookie = request.getParameter("isUseCookie");

 if(isUseCookie!=null)
 {//isUseCookie.equals("on")
	String username=loginUser.getName();
    String password=loginUser.getPassword();
    username = URLEncoder.encode(username,"utf-8");
    password = URLEncoder.encode(password,"utf-8");
    Cookie c = new Cookie("username",username);
    Cookie p = new Cookie("password",password);
    c.setMaxAge(604800);//单位秒,7天后失效
    p.setMaxAge(604800);//单位秒,7天后失效
    response.addCookie(c);
    response.addCookie(p);
   
 }
 else
 {
	
	 Cookie[] cookies = request.getCookies();
	 boolean flag_name,flag_pwd;
	 flag_name=flag_pwd=false;
	 for (Cookie c:cookies)
	 {
		 if(flag_name==false && c.getName().equals("username"))
		 {
			 c.setMaxAge(0);
			 response.addCookie(c);
			 flag_name=true;
			 
		 }
		 if(flag_pwd==false&&c.getName().equals("password"))
		 {
			 c.setMaxAge(0);
			 response.addCookie(c);
			 flag_pwd=true;
		 }
		 if(flag_pwd==flag_name&&flag_name==true)
		 {
			 break;
		 }
	 }
 }
 %>


session与cookie对比
1)session在服务端内存中保存用户信息,cookie在客户端保存用户信息
2)session中保持的是Object类型,cookie保存的是String类型
3)session随会话的结束而将其存储的数据销毁,cookie可以长期保存在客户端
4)session保存重要的信息(安全性较高),cookie保存不重要的信息



9.指令与动作
1)include指令
<%@ include file="URL"%>
include动作:
<jsp:include page="URL" flush="true|false"/>

flush表示被包含的页面是否从缓冲中读取

jsp笔记_第1张图片





你可能感兴趣的:(jsp笔记)