为了账号安全,请及时绑定邮箱和手机立即绑定

嵌入式狗的JAVA之路 JavaBean

标签:
Java

继续 中间耽误了几天~~ 嵌入式太苦逼,以前linux开发做的少,搞个小项目处处是坑,抽点时间出来继续java
在Jsp页面中如何使用Javabeans
方法二:在Jsp页面中通常使用jsp动作标签使用Javabean
<jsp:userBeans>
作用:在jsp页面中实例化或者在指定范围内使用javabean
<jsp:userBean id="标示符" class="java类名" scope="作用范围" />

<jsp:setProperty>
作用:给已经实例化的Javabean对象的属性赋值,一共有四种形式
1)<jsp:setProperty name="JavaBean实例名" property="" />(跟表单关联)
说明:JavaBean实例名 即 useBean 的 id;
表示对所有的属性进行匹配
2)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" />(跟表单相关联)
说明:对部分属性进行匹配
3)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue" />(手工设置)
4)<jsp:setProperty name ="JavaBean实例名" property="propertyName" param="request对象中的参数名" />(跟request参数关联)

<jsp:getProperty>标签的使用
作用:获取指定JavaBean对象的属性值。
<jsp:getproperty name="JavaBean实例名" property="属性名"/>

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被创建后,通过<jsp:setProperty>标签与<jsp:getProperty>标签调用时,将会按照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();

  1. setMaxAge( expiry ) 设置cookie的有效期,以秒为单位 getMaxAge() 获取cookie的有效时间,以秒为单位
  2. setValue(String value) 在cookie创建后,对cookie进行赋值 getValue() 获取cookie的值
  3. 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.语法 <% include file="地址"%>。
案例:显示当前时间的页面。(1)写一个只输出时间的方法的date.jsp。(2)用于显示的页面,包含<% include file="date.jsp"%>

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动作
<jsp:include page="URL" flush="true|false" />
page:包含的页面
flush:被包含的页面时否从缓冲区读取

inlude指令与include动作的区别:
include指令是编译阶段的指令,是将主页面和包含页面转换成一个servlet,因此编译较慢,执行较快。
include动作在编译阶段是将主页面和包含页面编译成俩个servlet,在执行期间调用页面输出。因此编译较快,执行较慢。
因此include指令用于不经常变化的内容,难以维护;include动作方便维护。

forward动作
语法:
<jsp:forward page="URL" />
等同于:request.getRequestDispatcher("/url").forward(request,response);

param动作:
param动作,传递方法为post
1、语法:<jsp:param name="参数名" value="参数值">
2、【常常与<jsp:forward></jsp:forward>一起使用】,并作为其【子标签】。
3、用于传递新参数或者【修改原有参数值】,修改参数时使用form表单里的参数名称即可。同样用request.getParameter("参数名")获取
必须与forward、include及plugin动作配合使用。通常与forward动作一起使用,作为它的子标签,它的作用是指定某个参数值,可以用于传递参数,
<jsp:forward page="url">
<jsp:param name="参数名" value="参数值"/>
</jsp: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();
}
}

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消