java jsp html_当Java遇见了Html--Jsp详解篇

###一、什么是Jsp

jsp是一种基于文本的程序,全名java server page,其特点是html和java程序共存。执行时jsp会被运行容器编译,编译后的jsp跟servlet一样,因此jsp是另一种形式的servlet。

二、jsp页面组成

jsp 页面包括以下内容:

静态内容

指令

表达式

小脚本

声明

注释

1.指令:

page指令: 通常位于jsp页面的顶端,同一个页面可以有多个page指令。

include指令:将一个外部文件嵌入到jsp文件中。

taglib指令 :使用标签定义新的自定义标签。

1.1其中page指令语法:

属性

默认值

language

java

import

“”

1.2 include 指令

1.3 动作

include动作

include 动作和include指令区别

描述

include指令

include 动作

语法

< % @ include file=""/>

< jsp:include page=“url” flush=“true”/>

发生时间

页面转换期间

请求期间

包含内容

文件实际内容

页面的输出

转化servlet

一个servlet

2个servlet

编译时间

较慢

较快

执行时间

稍快

较慢–每次资源必须被编译

forward动作

==

request.getRequestDispatcher("/url").forward(res,resp);

param动作

常常与一起使用

例子:

2.jsp注释

html注释

//客户端可见

jsp 注释

//客户端不可见

jsp 脚本注释 //客户端不可见

//单行注射

/** 多行注释*/

3.jsp脚本

在jsp页面中执行的java代码,语法:

4.jsp声明

在jsp页面定义变量或者方法,语法

举例:

String s="adele";

int add(int x,int y){

return x+y;

}

%>

5.jsp表达式

在jsp页面执行的表达式,语法:

// 表达式不以分号结尾

举例:

String s="adele";

%>

hello,

三、jsp生命周期

06bafe42126c81f6bf3e783cf62cf46b.png

jspService()是用来处理客户端请求的,对于每一个请求,服务器会创建一个新的线程来处理该请求。以多线程方式执行大大降低对系统的资源需求,提高系统的并发量和缩短了响应时间,servlet是常驻在服务器内存中。

它同servlet 一样,jsp 实例初始化和销毁也会调用sevlet的init() 和destroy();

另外jsp还有自己的初始化方法_jspInit();_jspDestroy();

public void _jspInit(){

}

public void _jspDestroy(){

}

%>

四、javaben的使用

动作元素:

动作元素为请求处理阶段提供信息。

edc30342a27fcf716ace8cee2ca591ab.png

在jsp页面使用javaben

像普通的java类一样,创建javabean;

在jsp使用动作标签来使用 javaben

相关标签如下:

(跟表单关联)

(跟表单关联)

(手动设置)

(跟request参数关联)

举个例子:

首先用户 在login.jsp提交表单,然后用户在dologin.jsp 根据动作标签获取参数。

login.jsp

用户名:
密码:

dologin.jsp

setProperty动作元素


--%>

--%>

--%>

用户名:

密码:

--%>

用户名:

密码:

测试javabean的四个作用域范围

request.getRequestDispatcher("testScope.jsp").forward(request, response);

%>

javaben 四大作用域

page ,仅当前页面有效

request ,通过httpRequest.getAttribute()获取jvabean对象

session ,通过httpSession.getAttribute() 获取javabean对象

application,通过application.getAttribute方法获取javabean 对象。

五、cookie

1.概述:

由于http协议的无状态,无法保存用户的状态,所以需要用session和cookie.

cookie 是web服务器保存在客户端的一系列文本信息。它的作用时记录一些用户的行为,简化登陆,但是容易泄露用户信息。

2.jsp创建和使用cookie

创建cookie

Cookie cookie=new Cookie(String ,Object);

写入cookie

response.addCookie(cookie);

读取 cookie

Cookie[] cookies=request.getCookies();

3.cookie的常用方法

setMaxAge();

setValue();

getName();

getValue();

getMaxAge();

举个列子: 使用cookie记住用户登陆的账号密码;

登陆界面:

用户登录


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");

}

}

}

%>

用户名:
密码:
十天内记住我的登录状态

处理登陆逻辑的jsp

登录成功


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); //重新保存。

}

}

}

}

%>

查看用户信息

使用cookie获取用户信息:

用户信息


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");

}

}

}

%>

用户名:

密码:

3.cookie和 session的区别

session

cookie

在服务端保存信息

在客户端保存信息

保存的 object类型

保存的是 string 类型

随会话结束,销毁数据

可以长期保存在客户端中

重要信息

不重要信息

扫码关注公众号有惊喜

(转载本站文章请注明作者和出处 方志朋的博客)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值