j2ee 实现



1.web.xml

部分地方写上

<web-app>
	<listener>
		<!-- 全局的listen -->
		<listener-class>
			com.gdad.ec.startup.ContextListener
		</listener-class>
	</listener>
	<filter>
。。。。
........................

2.listener



package com.gdad.ec.startup;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.gdad.ec.app.api.SystemConfig;
import com.gdad.ec.app.asynaction.BackupDB;

public class ContextListener implements ServletContextListener {

	public ContextListener() {
		_sc = null;
	}

	public void contextDestroyed(ServletContextEvent servletcontextevent) {
		log("System context destroyed.");
		_sc = null;
	}

	public void contextInitialized(ServletContextEvent servletcontextevent) {
		_sc = servletcontextevent.getServletContext();
		AppContext.getInstance().init(_sc);

		initAutoBackDB();
	}

	// /时间间隔(一天)
	private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

	public void initAutoBackDB() {
		
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, 3); // 凌晨3点
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		Date date = calendar.getTime(); // 第一次执行定时任务的时间
		// 如果第一次执行定时任务的时间 小于当前的时间
		// 此时要在 第一次执行定时任务的时间加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
		if (date.before(new Date())) {
			// date = this.addDay(date, 0);
			date = this.addDay(date, 1);
		}
		Timer timer = new Timer();
		// Task task = new Task();
		BackupDB backupDB = new BackupDB();
		// 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
		timer.schedule(backupDB, date, PERIOD_DAY);
	}

	public static void main(String[] args) {
		new ContextListener().initAutoBackDB();
	}

	// 增加或减少天数
	public Date addDay(Date date, int num) {
		Calendar startDT = Calendar.getInstance();
		startDT.setTime(date);
		startDT.add(Calendar.DAY_OF_MONTH, num);
		return startDT.getTime();
	}

	private void log(String s) {
		if (_sc != null) {
			_sc.log(new StringBuffer().append("ContextListener: ").append(s)
					.toString());
		} else {
			System.out.println(new StringBuffer().append("ContextListener: ")
					.append(s).toString());

		}
	}

	private ServletContext _sc;
}





J2EE是一种用于构建企业级应用程序的Java平台,它提供了丰富的API和工具来支持开发和部署分布式系统。要实现图书推荐系统,可以利用J2EE的各种特性和组件来构建一个高效且可扩展的系统。 首先,我们可以使用JSP(Java服务器页面)和Servlet来实现系统的前端界面和后台逻辑。JSP可以用于展示图书推荐页面,包括图书的相关信息、用户评分和评论等。Servlet可以处理前端界面发送的请求,从数据库或其他外部数据源中获取推荐图书的数据,并将结果返回给前端。 其次,可以利用JavaBean来封装图书数据。JavaBean是一种可重用的Java组件,可以在J2EE环境下被多个组件使用。我们可以创建一个图书类,包括图书的标题、作者、出版社、简介等属性,并为每个属性提供相应的getter和setter方法。 然后,可以使用JDBC(Java数据库连接)来与数据库进行交互。我们可以将图书的相关数据存储在数据库中,包括图书的详细信息、用户的评分和评论等。使用JDBC,我们可以连接到数据库,执行SQL查询和更新语句,获取和修改图书数据。 另外,可以利用J2EE的安全特性来保护系统的数据和功能。例如,可以使用Java Authentication and Authorization Service(JAAS)来实现用户认证和授权。通过认证,系统可以验证用户身份,并根据用户的权限访问控制图书推荐功能和数据。 最后,为了提高系统的性能和可扩展性,可以使用J2EE的分布式特性。我们可以将系统部署在多台服务器上,并使用基于Java的远程方法调用(RMI)或消息中间件来进行跨服务器的通信和数据共享。 综上所述,借助J2EE的各种特性和组件,我们可以实现一个高效、可扩展的图书推荐系统。通过JSP和Servlet来实现用户界面和业务逻辑,使用JavaBean封装图书数据,利用JDBC与数据库交互,使用JAAS进行用户认证和授权,最后使用分布式特性来提高系统性能和可扩展性。这样的系统可以帮助用户快速找到符合他们需求和兴趣的图书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值