JavaWeb12.三层架构项目集成

目录

回顾内容

web01

什么是jsp?

安装tomcat

Web02

基本指令

表单提交方式

Web03

jsp的跳转方式

Web04

数据库连接语句

Web07

cookie和session的异同

Web09

分页功能的sql语句

Web10

文件上传

富文本编辑器

Web11

在没有使用三层架构的情况

三层架构

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

数据库连接语句

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

编写用户逻辑层接口代码

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

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

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


回顾内容

web01

什么是jsp?

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

例如:"> 解析顺序:.jsp -> .java -> .class ->jvm执行

安装tomcat

教程:JavaWeb01.web环境搭建

tomcat默认端口:8080

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

Web02

基本指令

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

表单提交方式

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

ps:文件上传的时候,必须使用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映射,为保存文件的目录加上访问路径

ps:文件上传可以使用UUID生成一个不重复的名字        UUID.randomUUID() 

富文本编辑器

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

Web11

在没有使用三层架构的情况

  • jsp  将页面显示出来
  • dao  在数据库中取得数据并进行处理

dao层 1.取得数据  2.处理数据

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

三层架构

  • 各司其职
  • 高内聚,低耦合

【结构】

  • 表示层
  • 业务逻辑层
  • 数据库访问层

【调用顺序】

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

【命名规则】

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

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

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

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

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

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

JavaWeb12.三层架构项目集成_第1张图片

数据库连接语句

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;
	}
}

你要尽全力保护你的梦想。那些嘲笑你梦想的人,他们注定失败,他们想把你变成和他们一样。我坚信,只要心中有梦想,我就会与众不同。你也是。

你可能感兴趣的:(web,后端,eclipse,tomcat,java)