###一、什么是Jsp
jsp是一种基于文本的程序,全名java server page,其特点是html和java程序共存。执行时jsp会被运行容器编译,编译后的jsp跟servlet一样,因此jsp是另一种形式的servlet。
二、jsp页面组成
jsp 页面包括以下内容:
- 静态内容
- 指令
- 表达式
- 小脚本
- 声明
- 注释
1.指令:
- page指令: 通常位于jsp页面的顶端,同一个页面可以有多个page指令。
- include指令:将一个外部文件嵌入到jsp文件中。
- taglib指令 :使用标签定义新的自定义标签。
1.1其中page指令语法:
1 | <%@ page 属性=“属性值”> |
属性 | 默认值 | ||
---|---|---|---|
language | java | ||
import | “” | ||
1.2 include 指令 | |||
|
|||
<jsp:include page=”url” flush=”true”/> | |||
|
|||
<jsp:forward page=”url”/> | |||
== | |||
request.getRequestDispatcher(“/url”).forward(res,resp); | |||
|
|||
<jsp:param name=”参数名” value=”参数值”/> | |||
常常与jsp:forward一起使用 | |||
|
|||
<jsp:forward page=”user.jsp”> | |||
<jsp:param name="email" value="1233@154.com"/>
1 |
|
1 | * jsp 注释 |
<%– jsp注释 –%>//客户端不可见
1
2
3
4
* jsp 脚本注释 //客户端不可见
//单行注射
/** 多行注释*/
1
2
3
4
5
*3.jsp脚本*
在jsp页面中执行的java代码,语法:
<% java 代码 %>
1 | *4.jsp声明* |
<%! java 代码 %>
1 | 举例: |
<%!
String s=”adele”;
int add(int x,int y){
return x+y;
}
%>
1 | *5.jsp表达式* |
<% =表达式 %>// 表达式不以分号结尾
1 |
|
<%!
String s=”adele”;
%>
hello,<%=s %>
1 |
|
<%@ page language=”java” contentType=”text/html”;charset=”utf-8”>
<%!
public void _jspInit(){
}
public void _jspDestroy(){
}
%>
1 |
|
<jsp:useBwan id=”” class=”” scope=”” />
<jsp:setProperty name=”javabean 是例” property=”*”/>(跟表单关联)
<jsp:setProperty name=”javabean 是例” property=”javaben 属性名”/>(跟表单关联)
<jsp:setProperty name=”javabean 是例” property=”javaben 属性名” value=””/>(手动设置)
<jsp:setProperty name=”javabean 是例” property=”javaben 属性名” param=”request对象参数”/>(跟request参数关联)
<jsp:getProperty name=”” property=””/>
1 |
|
1 |
|
setProperty动作元素
<%--
密码:<%=myUsers.getPassword() %>
--%> 用户名:
密码:
测试javabean的四个作用域范围 <% request.getRequestDispatcher("testScope.jsp").forward(request, response); %>
1 |
|
Cookie cookie=new Cookie(String ,Object);
1 |
|
response.addCookie(cookie);
1 |
|
Cookie[] cookies=request.getCookies();
1 |
|
用户登录
<% request.setCharacterEncoding("utf-8"); String username=""; String password = ""; Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0) { for(Cookie c:cookies) { if(c.getName().equals("username")) { username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")) { password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %>
1 |
|
登录成功
<% request.setCharacterEncoding("utf-8"); //首先判断用户是否选择了记住登录状态 String[] isUseCookies = request.getParameterValues("isUseCookie"); if(isUseCookies!=null&&isUseCookies.length>0) { //把用户名和密码保存在Cookie对象里面 String username = URLEncoder.encode(request.getParameter("username"),"utf-8"); //使用URLEncoder解决无法在Cookie当中保存中文字符串问题 String password = URLEncoder.encode(request.getParameter("password"),"utf-8"); Cookie usernameCookie = new Cookie("username",username); Cookie passwordCookie = new Cookie("password",password); usernameCookie.setMaxAge(864000); passwordCookie.setMaxAge(864000);//设置最大生存期限为10天 response.addCookie(usernameCookie); response.addCookie(passwordCookie); } else { Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0) { for(Cookie c:cookies) { if(c.getName().equals("username")||c.getName().equals("password")) { c.setMaxAge(0); //设置Cookie失效 response.addCookie(c); //重新保存。 } } } } %> 查看用户信息
1 |
|
用户信息
<% request.setCharacterEncoding("utf-8"); String username=""; String password = ""; Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0) { for(Cookie c:cookies) { if(c.getName().equals("username")) { username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")) { password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %>
用户名:<%=username %>
密码:<%=password %>
*3.cookie和 session的区别*
session |cookie
--- | ---
在服务端保存信息 | 在客户端保存信息
保存的 object类型 | 保存的是 string 类型
随会话结束,销毁数据 | 可以长期保存在客户端中
重要信息 | 不重要信息