java beanparam page_嵌入式狗的JAVA之路 JavaBean

继续 中间耽误了几天~~ 嵌入式太苦逼,以前linux开发做的少,搞个小项目处处是坑,抽点时间出来继续java

在Jsp页面中如何使用Javabeans

方法二:在Jsp页面中通常使用jsp动作标签使用Javabean

作用:在jsp页面中实例化或者在指定范围内使用javabean

作用:给已经实例化的Javabean对象的属性赋值,一共有四种形式

1)(跟表单关联)

说明:JavaBean实例名 即 useBean 的 id; 表示对所有的属性进行匹配

2)(跟表单相关联)

说明:对部分属性进行匹配

3)(手工设置)

4)(跟request参数关联)

标签的使用

作用:获取指定JavaBean对象的属性值。

JavaBean四个作用域范围:

1.page范围:范围最小,与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时JavaBean被销毁。

2.request范围:与JSP的request生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁。

3.session范围:与JSP的session生命周期相对应,JavaBean的生命周期存在于session会话之中,当session超时或会话结束时JavaBean被销毁。

4.application范围:与JSP的application生命周期相对应,在各个用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁。

这4种作用范围与JavaBean的生命周期是息息相关的,当JavaBean被创建后,通过标签与标签调用时,将会按照page、request、session和application的顺序来查找这个JavaBean实例,直至找到一个实例对象为止,如果在这4个范围内都找不到JavaBean实例,则抛出异常。

JavaBean的四个作用域范围

page //仅当前页面有效

request //可以通过HttpRequest.getAttribute()方法获得JavaBean对象。

session //可以通过HttpSession.getAttribute()方法获得JavaBean对象。

application //可以通过application.getAttribute()方法获得JavaBean对象。

javabean web开发模型

Model1:jsp+javabean,其中jsp为表示层和控制层,javabean为模式层

Model2:jsp+servlet+javabean,jsp为表示层,servlet为控制层,javabean为模式层

模式层Model,表示层View,控制层Control,合起来即为MVC。

Model1分为三层:

1.界面层:由JSP页面进行与客户端浏览器的交互,可以直接调用JavaBeans。

2.业务逻辑层:由JavaBeans进行处理业务逻辑,封装数据,并与数据库层进行交互。

3.数据库层:底层数据库,可被JavaBeans访问。

http协议的无状态性

1、无状态是指,当浏览器发送请求给服务器的时候,服务器会响应。但当同一个浏览器再次发送请求时,服务器不会知道是刚才那个浏览器。

2、简单说,服务器【不会保存用户状态】,不会记得客户端是否访问过,所以这就是无状态协议。

保存用户数据:session和cookie

cookie是web服务器保存在客户端的一系列文本信息,在线视频,购物车等用户记录

1、对特地对象的追踪

2、保存用户网页浏览记录与习惯

3、简化登录

安全风险:容易泄露用户信息

创建Cookie对象

Cookie cookie=new Cookie(String key,Object value);

写入Cookie

response.addCookie(cookie);

读取Cookie

Cookie[] cookies=request.getCookies();

setMaxAge( expiry ) 设置cookie的有效期,以秒为单位 getMaxAge() 获取cookie的有效时间,以秒为单位

setValue(String value) 在cookie创建后,对cookie进行赋值 getValue() 获取cookie的值

getName() 获取cookie的名称

4.setValue()和getValue()涉及的都是字符串,对应前面提到的 Cookie是web服务器保存在客户端的文本文件。

解决Cookie中中文出错

import="java.util.,java.net."

request.setCharacterEncoding("utf-8");

String username = URLEncoder.encode(request.getParameter("username"),"utf-8");

//使用URLEncoder解决无法在Cookie当中保存中文字符串问题

username = URLDecoder.decode(c.getValue(),"utf-8");

session和cookie的对比

session在服务器端保存用户信息,cookie在客户端保存用户信息

session中保存的是Object类型,cookie保存的是String类型

session随着会话结束将存储的数据销毁,cookie可以长期保存在客户端

session保存重要信息,cookie保存不重要信息

1.常用的三种指令:page,include,taglib。

2.page:位于页面顶端,一个页面可以包含多个page指令

include:将一个外部文件嵌入jsp中,同时解析这个页面中的jsp语句。

taglib:使用标签库,自定义新的标签,在jsp中启动定制行为。

3.include指令

1.语法 。

案例:显示当前时间的页面。(1)写一个只输出时间的方法的date.jsp。(2)用于显示的页面,包含

cookie是服务器保存在客户端的一系列的文本信息,主要的应用是,记录用户的登录信息,以方便用户下次登陆,实现购物车。cookie中常用的方法有setMaxAge(时间)设置生存期限,setName(string name)

设置cookie的名字,setValue(string value)设置cookie的值,getName()获取cookie的名字,getValue()获取cookie的值,是string类型的,getMaxage()获得生存期限,创建cookie对象用Cookie c=new Cookie(string key,object value);添加cookie对象用response.addCookie(c);request.getCookies()获取cookie的值,注意是一个cookie数组,要获取每个值还要遍历,获取复选框的值用request.getParameterValues()得到的是一个字符串数组,如果用户选了保存,则讲cookie保存,如果没有保存则将相应的值删除。如果想在cookie中保存汉字的话要用到一个方法,在java.net.*下,存的时候要进行编码用URLEncoder.encoder(string s,"utf-8"),读数据的时候要进行解码用UrlDecoder.decode(string s,"utf-8"),cookie中存的信息是有大小限制的。

include动作

page:包含的页面

flush:被包含的页面时否从缓冲区读取

inlude指令与include动作的区别:

include指令是编译阶段的指令,是将主页面和包含页面转换成一个servlet,因此编译较慢,执行较快。

include动作在编译阶段是将主页面和包含页面编译成俩个servlet,在执行期间调用页面输出。因此编译较快,执行较慢。

因此include指令用于不经常变化的内容,难以维护;include动作方便维护。

forward动作

语法:

等同于:request.getRequestDispatcher("/url").forward(request,response);

param动作:

param动作,传递方法为post

1、语法:

2、【常常与一起使用】,并作为其【子标签】。

3、用于传递新参数或者【修改原有参数值】,修改参数时使用form表单里的参数名称即可。同样用request.getParameter("参数名")获取

必须与forward、include及plugin动作配合使用。通常与forward动作一起使用,作为它的子标签,它的作用是指定某个参数值,可以用于传递参数,

实现DBHelper类型

private static final String driver="com.mysql.jdbc.Driver";//数据库驱动

//链接数据库的URL地址

private static final String url="jdbc:mysql://localhost(数据库主机IP):3306(端口号)/shopping(数据库名)?useUnicode=true(unicode是一个字符编码方式,它保证了世界各国字符都能被覆盖到)&characterEncoding=UTF-8(防止中文乱码)";

private static final String username="root";//数据库的用户名

private static final String password="";//数据库的密码

//创建私有类型的连接对象

private static Connection conn=null;

//静态代码块负责加载驱动try/catch(防止出现异常)

static{

try{

class.forName(driver);

}catch(Exception ex){

ex.printStackTrace();

}

}

//单例模式,返回一个数据库链接对象

public static Connection getConnection(){

if(conn==null){

conn=DriverManager.getconnection(url,username,password);

}

return conn;

}

//通过main函数判断连接是否成功

public static void main(String[]args){

try{

Connection conn=DBHelper.getConnection();

if(conn!=null){

System.out.println("数据库连接成功!");

}else{System.out.println("数据库连接失败!");}

}catch(Exception ex){

ex.printStacktrace();

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值