JavaWeb12.三层架构项目集成

回顾内容

web01

什么是jsp?
jsp是一种文件格式,用于编写java,html,css,javaScript,jsp本质上是java的额外封装,解析过程中优先解析java

安装tomcat

教程:JavaWeb01.web环境搭建

tomcat默认端口:8080

如果出现了端口异常,仅需要双击服务器修改端口

 Web02

基本指令

  • <%=输入内容%>
  • <% java脚本 %>
  • <% page页面指令 %>
  • <% include 包含指令 %>

表单提交方式

  • get 通过地址栏带参,参数有长度限制
  • post 不通过地址栏带参,参数没有长度限制

  web03

jsp的跳转方式

转发  forward

  • 可以携带数据(请求中的)
  • 地址栏不变
  • 服务器行为

重定向 redirect

  • 不可以携带数据(请求中的)
  • 地址栏会变
  • 是客户端行为

Web04

数据库连接语句

jdbc:oracle:thin:@localhost:1521:orcl

Web07
cookie和session的异同
同:都可以设定存在时间:session默认30min,cookie默认浏览器关闭

异:

session  服务端存储
cookie  客户端存储
应用场景:

浏览记录  cookie
鉴权  session
部分记录存数据库里,缓冲数据库

Web09
分页功能的sql语句
【规律】:page当前页面   rows显示条数

           page:1 rows:10  1~10

           page:2 rows:10  11~20

           page:3 rows:10  21~30

 begin(开始位置):(page-1)*rows+1        end(结束位置):page*rows

【sql语句】:
 


select * from (
    select a.*,rownum myr from t_news a
)b where myr between begin and end;

Web10

文件上传

操作流程

  1. 将文件保存到电脑路径中
  2. 将保存的电脑路径存到数据库
  3. 绑定tomcat映射,为保存文件的目录加上访问路径

富文本编辑器

使用实质:将输入的语句变成html语句进行保存

Web11
在没有使用三层架构的情况
jsp  将页面显示出来
dao  在数据库中取得数据并进行处理
dao层 1.取得数据  2.处理数据

【系统的耦合性:各个模块连接的紧密度】 

三层架构
各司其职
高内聚,低耦合
【结构】

表示层
业务逻辑层
数据库访问层
【调用顺序】

表示层 -> 业务逻辑层 -> 数据库访问层 ->获得数据 ->数据库访问层 -> 业务逻辑层 -> 表示层

【命名规则】

com.biz  ->  Biz接口,规范实现类,通过里氏替换原则在表示层中实现具体方法

com.biz.impl  ->  Biz的接口实现类,具体处理数据具体方法的体现

com.dao  ->  Dao接口,数据库访问层实现类的规范

com.dao.impl  -> Dao接口的实现类,访问数据库方法具体体现
 

三层架构在项目中的具体应用

创建接口和实现类,其中可以先创建接口来规范实现类中的方法,也可以先创建实现来来完善接口中的约束

数据库连接语句


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

创建用户对象以便后续实现登录注册功能 


package com.pojo;
 
public class User {
	private int userid;
	private String username;
	private String userpwd;
	private String usersex;
	private int userage;
	
	public String getUsersex() {
		return usersex;
	}
	public void setUsersex(String usersex) {
		this.usersex = usersex;
	}
	public int getUserage() {
		return userage;
	}
	public void setUserage(int userage) {
		this.userage = userage;
	}
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpwd() {
		return userpwd;
	}
	public void setUserpwd(String userpwd) {
		this.userpwd = userpwd;
	}
	
	@Override
	public String toString() {
		return "User [userid=" + userid + ", username=" + username + ", userpwd=" + userpwd + "]";
	}
	
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(int userid, String username, String userpwd, String usersex, int userage) {
		super();
		this.userid = userid;
		this.username = username;
		this.userpwd = userpwd;
		this.usersex = usersex;
		this.userage = userage;
	}
	
}

编写用户逻辑层接口代码


package com.biz;
 
import com.pojo.User;
 
import newsProject.T_user;
 
/**
 * 用户逻辑层接口
 * @author lihao
 *
 */
public interface IUserbiz {
	
	int logon(String uname,String upwd,String usex,int uage);
	
	String login(String uname,String upwd);
}

编写用户业务逻辑层实现类代码


package com.biz.impl;
 
import com.biz.IUserbiz;
import com.dao.IUserDao;
import com.dao.impl.UserDaoImpl;
import com.pojo.User;
 
/**
 * 
 * @author lihao
 *
 */
public class UserBizImpl implements IUserbiz{
	IUserDao ud = new UserDaoImpl();
	
	public int logon(String uname,String upwd,String usex,int uage){
		try {
			int uid=ud.queryMaxUserId();
			User u=new User(uid,uname,upwd,usex,uage);
			return ud.logon(u);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}
	
	public String login(String uname,String upwd) {
		User u =ud.login(uname);
		if(u==null) {
			return "account not found";
		}
		if(!upwd.equals(u.getUserpwd())) {
			return "password error";
		}
		return "login success";
	}
}

编写用户数据库访问层接口代码


package com.dao;
 
import com.pojo.User;
 
public interface IUserDao {
	
	User login(String uname);
	
	int logon(User user);
	
	int queryMaxUserId();

编写用户数据库访问层实现类代码


package com.dao.impl;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
import com.dao.IUserDao;
import com.pojo.User;
 
import newsProject.DBHelper;
 
public class UserDaoImpl implements IUserDao{
	private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	
	@Override
	public User login(String uname) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select * from t_user where user_name = ?");
			ps.setString(1,uname);
			rs=ps.executeQuery();
			if(rs.next()) {
				User u = new User();
				u.setUserid(rs.getInt(1));
				u.setUsername(rs.getString(2));
				u.setUserpwd(rs.getString(3));
				u.setUsersex(rs.getString(4));
				u.setUserage(rs.getInt(5));
				return u;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
 
	@Override
	public int logon(User user) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("insert into t_user(user_id,user_name,user_pwd,user_sex,user_age) values(?,?,?,?,?)");
			ps.setInt(1,user.getUserid());
			ps.setString(2,user.getUsername());
			ps.setString(3,user.getUserpwd());
			ps.setString(4,user.getUsersex());
			ps.setInt(5,user.getUserage());
			return ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}
	
	public int queryMaxUserId() {
		int i=0;
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select max(user_id) from t_user");
			rs=ps.executeQuery();
			if(rs.next()) {
				i=rs.getInt(1)+1;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return i;
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值