JavaWeb08(Application及JavaBean的安装)

目录

一,Application

概念:

案例:在线人数的计算

效果图:

代码:

二,JavaBean

JavaBean的优势

1.解决代码重复编写,减少代码冗余

2.功能区分明确,避免业务逻辑处理与页面显示处理集中在一起造成混乱

3.提高了代码的维护性

JavaBean的概念:

JavaBean的分类

封装数据

代码:

封装业务

代码: 

 在JSP页面中导入JavaBean

三,JavaBean的封装案例:

1,找到项目中的java文件夹

 

 2.分别建立DBHelper,Dao,pojo

 DBHelper类代码:

News类代码:

NewsDao代码:


一,Application

概念:

和上篇提到的cookiesession一样都是一种存储方式,cookie是将数据储存在浏览器中的前端,session是将数据存储在后端的,是会话级储存,而Application是应用级储存,数据是共享的。(项目中的界面都能打拿到Application,且数据都是一致的)。

案例:在线人数的计算

登陆人数可以变化,在上方显示当前登陆的人数

效果图:

代码:

dologin.jsp界面(登陆处理界面)

<%@page import="web_06.com.util.DBHelper"%>
<%@page import="javax.servlet.http.Cookie"%>
<%@page import="java.net.CookieHandler"%>
<%@page import="oracle.jdbc.driver.OracleDriver" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.util.Arrays" %>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
    request.setCharacterEncoding("utf-8");
    String yh = request.getParameter("yh");
    String mm = request.getParameter("mm");
  	//获得连接
      Connection con = DBHelper.getCon();
      //获得执行对象
      PreparedStatement ps = con.prepareStatement("select * from t1_user where t_name=? and t_pwd=?");
      ps.setString(1, yh);
      ps.setString(2, mm);
      //获得结果集
      ResultSet rs = ps.executeQuery();
      //判断结果
      if (rs.next()) {
      	//要实现存储资源共享,用application
      	//1,将用户名存入到服务器的卡库session中/存到后端
      	application.setAttribute("uname", yh);//在application中开一个空间储存数据
          //计算当前的人数(存储在公共内存卡application中)
          Object obj=application.getAttribute("count");//从application中取出count
      	if(obj==null){
      		obj=0;
      	}
      	Integer count=(Integer) obj;
      	count++;//登录成功人数+1
      	application.setAttribute("count", count);//取出人数
   		response.sendRedirect("index.jsp");
      } else {
          //重定向 客户端
          response.sendRedirect("login.jsp");
      }
      //资源关闭
	DBHelper.close(con, ps, rs);
%>

退出处理界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//退出功能
	//session的存活时间
	//服务器一关闭session就会清空数据
	//删除session
	session.invalidate();
	//并跳回登录界面
	response.sendRedirect("login.jsp");
	//人数-1
	Object obj=application.getAttribute("count");//从application中拿到countapplication
	Integer count=(Integer)obj;///转成int
	count--;//人数-1
	application.setAttribute("count", count);//再重新拿到count
%>

二,JavaBean

JavaBean的优势

1.解决代码重复编写,减少代码冗余

2.功能区分明确,避免业务逻辑处理与页面显示处理集中在一起造成混乱

3.提高了代码的维护性

JavaBean的概念:

符合规范的Java类都是JavaBean

JavaBean的分类

封装数据

按照OO原则,属性与数据库表字段相对应 属性私有 具有public的set/get方法

代码:

封装业务

具有实现特定功能的方法和方法实现 通常与一个封装数据的JavaBean对应

代码: 

 在JSP页面中导入JavaBean

//引入JavaBean
<%@ page import="org.jbit.news.bean.*" %>
//使用JavaBean
<%
    Comment c = new Comment();
    c.setCid(1014);
    c.getCauthor();
%>

JavaBean就像在Java程序中编写类, 实例化后就可以使用其中的属性和方法

三,JavaBean的封装案例:

1,找到项目中的java文件夹

 2.分别建立DBHelper,Dao,pojo

 DBHelper类代码:

package com.xly.until;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
public class DBHelper {
	//加载驱动
	static {
		//OracleDriver
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	//定义连接字符串
	private static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
	//获得连接
	public static Connection getCon() {
		try {
			return DriverManager.getConnection(URL,"scott","123");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	//关闭资源
	public static void close(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if (!con.isClosed()) {
		         con.close();
		     }
		     ps.close();
		     rs.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

News类代码:

package com.xly.pojo;
import java.io.Serializable;
public class News implements Serializable{//实现序列化接口,以防之后报错
	private int news_Id;
	private String news_titile;
	private int news_topic;
	private String news_author;
	private String news_publisher;
	private int news_click;
	private int news_maker;
	private String news_content;
	private String news_cover;
	public int getNews_Id() {
		return news_Id;
	}
	public void setNews_Id(int news_Id) {
		this.news_Id = news_Id;
	}
	public String getNews_titile() {
		return news_titile;
	}
	public void setNews_titile(String news_titile) {
		this.news_titile = news_titile;
	}
	public int getNews_topic() {
		return news_topic;
	}
	public void setNews_topic(int news_topic) {
		this.news_topic = news_topic;
	}
	public String getNews_author() {
		return news_author;
	}
	public void setNews_author(String news_author) {
		this.news_author = news_author;
	}
	public String getNews_publisher() {
		return news_publisher;
	}
	public void setNews_publisher(String news_publisher) {
		this.news_publisher = news_publisher;
	}
	public int getNews_click() {
		return news_click;
	}
	public void setNews_click(int news_click) {
		this.news_click = news_click;
	}
	public int getNews_maker() {
		return news_maker;
	}
	public void setNews_maker(int news_maker) {
		this.news_maker = news_maker;
	}
	public String getNews_content() {
		return news_content;
	}
	public void setNews_content(String news_content) {
		this.news_content = news_content;
	}
	public String getNews_cover() {
		return news_cover;
	}
	public void setNews_cover(String news_cover) {
		this.news_cover = news_cover;
	}
	@Override
	public String toString() {
		return "News [news_Id=" + news_Id + ", news_titile=" + news_titile + ", news_topic=" + news_topic
				+ ", news_author=" + news_author + ", news_publisher=" + news_publisher + ", news_click=" + news_click
				+ ", news_maker=" + news_maker + ", news_content=" + news_content + ", news_cover=" + news_cover + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + news_Id;
		result = prime * result + ((news_author == null) ? 0 : news_author.hashCode());
		result = prime * result + news_click;
		result = prime * result + ((news_content == null) ? 0 : news_content.hashCode());
		result = prime * result + ((news_cover == null) ? 0 : news_cover.hashCode());
		result = prime * result + news_maker;
		result = prime * result + ((news_publisher == null) ? 0 : news_publisher.hashCode());
		result = prime * result + ((news_titile == null) ? 0 : news_titile.hashCode());
		result = prime * result + news_topic;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		News other = (News) obj;
		if (news_Id != other.news_Id)
			return false;
		if (news_author == null) {
			if (other.news_author != null)
				return false;
		} else if (!news_author.equals(other.news_author))
			return false;
		if (news_click != other.news_click)
			return false;
		if (news_content == null) {
			if (other.news_content != null)
				return false;
		} else if (!news_content.equals(other.news_content))
			return false;
		if (news_cover == null) {
			if (other.news_cover != null)
				return false;
		} else if (!news_cover.equals(other.news_cover))
			return false;
		if (news_maker != other.news_maker)
			return false;
		if (news_publisher == null) {
			if (other.news_publisher != null)
				return false;
		} else if (!news_publisher.equals(other.news_publisher))
			return false;
		if (news_titile == null) {
			if (other.news_titile != null)
				return false;
		} else if (!news_titile.equals(other.news_titile))
			return false;
		if (news_topic != other.news_topic)
			return false;
		return true;
	}	
}

NewsDao代码:

package com.xly.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import web_06.com.pojo.News;
import web_06.com.util.DBHelper;
public class NewsDao {
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	public List<News> queryByName(String newName) {
		List<News> list=new ArrayList<News>();
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from t2_news where news_title like ?");
			//占位符赋值
            ps.setString(1,"%"+newName+"%");
            //得到结果集
			rs=ps.executeQuery();
			while(rs.next()) {
				News news=new News();
				//给新闻对象的属性赋值
				news.setNews_Id(rs.getInt(1));
				news.setNews_titile(rs.getString(2));
				news.setNews_topic(rs.getInt(3));
				news.setNews_author(rs.getString(4));
				news.setNews_publisher(rs.getString(5));
				news.setNews_click(rs.getInt(6));
				news.setNews_maker(rs.getInt(7));
				news.setNews_content(rs.getString(8));
				news.setNews_cover(rs.getString(9));
				//将新闻对象添加到集合中
				list.add(news);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return list;
	}
}

今天的分享就到此结束啦,精彩下期继续!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值