Web开发之回顾总结&三层架构

目录

往期回顾

1.Web环境的搭建

2.JSP基本语法&表单提交方式

3.页面跳转&数据库连接

4.网页登录&增加操作

5.增删查改

6.点击量&模糊查询&评论功能

7.服务器、客户端存储

8.Application&JavaBean封装

9.分页功能

10.富文本编辑器&文件上传功能

11.三层架构

使用三层架构编写登录功能 

往期回顾

最近发布了很多关于Web开发的文章,今天来稍稍回顾一下

想要详细了解的可以点击下面的链接


1.Web环境的搭建

JavaWeb01.WED环境的搭建_小阿飞_的博客-CSDN博客JDK开发工具包jdk是什么?jdk是java development kit的缩写,意思是java程序开发的工具包JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。如何下载和安装jd..https://blog.csdn.net/yifei_345678/article/details/123674499?spm=1001.2014.3001.5501

*jsp
    * 什么是jsp 
        - 是一种文件格式
        - 写java,html,css,js
        - jsp本质上是java的额外封装,解析过程中优先解析java
">理解: 的引号中放了字符串"www.baidu.com"
        -执行顺序: .jsp -> .java -> .class -> jvm
    * 安装tomcat
        - 默认端口 8080
        - 如果出现了端口异常,修改端口

2.JSP基本语法&表单提交方式

Web02.jsp基本语法&表单提交方式_小阿飞_的博客-CSDN博客

  * 基本语法
        - <%=输入内容 %>
        - <% java脚本 %>
        - <%@page 控制整个JSP页面的指令(如导包语句,设置编码格式)%>   
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP6Zi_6aOeXw==,size_20,color_FFFFFF,t_70,g_se,x_16
        - <%@include 包含指令(引入jsp文件)%>
    * 表单提交方式
        - get  通过地址栏带参,参数有长度限制
        - post 不通过地址栏带参,参数没有长度限制
        -> 文件上传的时候 必须是post,必须是多段式表单(enctype="multipart/form-data"

3.页面跳转&数据库连接

JavaWeb之页面跳转&数据库连接_小阿飞_的博客-CSDN博客_web页面连接数据库

 * jsp的跳转方式
        - 转发 forward 
            - 可以携带数据(请求中的)
            - 地址栏不变
            - 是服务器行为
        - 重定向 redirect 
            - 不可以携带数据(请求中的)
            - 地址栏变
            - 是客户端行为

4.网页登录&增加操作

JavaWeb之网页登陆&增加操作_小阿飞_的博客-CSDN博客

* jdbc链接数据库
        -链接oracle数据库的URL jdbc:oracle:thin:@localhost:1521:orcl

5.增删查改

Web项目开发之增删查改_小阿飞_的博客-CSDN博客

6.点击量&模糊查询&评论功能

Web项目之点击量&模糊查询&评论功能_小阿飞_的博客-CSDN博客

7.服务器、客户端存储

 Web项目之服务器、客户端存储_小阿飞_的博客-CSDN博客

  【都可以设定存在时间,默认存活时间:session-30分钟,cookie-浏览器关闭】
    * session 服务端存储
    * cookie  客户端存储
    应用场景:
        * 历史浏览记录功能  cookie
        * 鉴权功能  session
        * 存数据库里面,缓冲数据库

8.Application&JavaBean封装

Web之Application&JavaBean封装_小阿飞_的博客-CSDN博客

 *Application 应用级存储 适合公共信息的存储

  *在JSP页面中导入JavaBean

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP6Zi_6aOeXw==,size_11,color_FFFFFF,t_70,g_se,x_16

9.分页功能

 Web开发之分页功能_小阿飞_的博客-CSDN博客_分页web

 * 分页功能的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 stu a
            )b where myr between begin and end;

10.富文本编辑器&文件上传功能

 Web开发之富文本编辑器&文件上传功能_小阿飞_的博客-CSDN博客

   * 文件上传
        - 文件上传的主要操作
            * 1.将文件保存到电脑路径中
            * 2.将保存的电脑路径存到数据库
            * 3.绑定tomcat映射,为你保存文件的目录加上一个访问路径
        - 如果诞生一个不重复的名字
            * 使用UUID    UUID.randomUUID()
    * 富文本编辑器 (把你输入的语句变成了html语句来保存)

11.三层架构

 Web开发之三层架构_小阿飞_的博客-CSDN博客

三层架构:
        * jsp 将页面显示出来
        * dao 去数据库取数据,处理数据
    
        dao层:1.拿数据 2.负责处理数据
        【系统的耦合性:各个模块连接的紧密度】
    
    【三层架构】
        * 各司其职
        * 高内聚,低耦合

    【结构】 
        * 表示层          UI       服务员
        * 业务逻辑层     biz     厨师
        * 数据库访问层   dao     买菜的人

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

    【命令规则】
        com.biz -> Biz接口
        com.biz.impl ->Biz的接口实现类
        com.dao -> Dao接口
        com.dao.impl -> Dao接口的实现类

这里再为大家贴上一份更加详细的三层架构案例代码:

使用三层架构编写登录功能

表示层调用业务逻辑层

表示层doLogin:负责接受用户的请求、显示网页内容

比如这里有一个登录界面,代码如下:



其中,输入框的name属性就是用户输入的用户名或密码,也是表示层请求中拿到的值

表示层doLogin代码:

由于doLogin中需要用到用户对象,所以再编写之前要新建用户实体类

package com.pojo;
/**
 *用户的实体类
 */
public class User {
	    private  String username;
	    private  String password;
	    public  String getUsername() {
	        return username;
	    }
	    public  String getPassword() {
	        return password;
	    }
	    public void setUsername(String username) {
	        this.username = username;
	    }
	    public void setPassword(String password) {
	        this.password = password;
	    }
	    public User(String username, String password) {
	        this.username = username;
	        this.password = password;
	    }
}

 表示层负责接受用户的请求的代码:

<%
	//doDenglu表示层拿到用户请求的数据:request
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    //将数据封装到用户实体类中
    User user = new User(username, password);
%>

表示层doLogin调用业务逻辑层代码

重写接口中的登录方法后:表示层doLogin调用业务逻辑层代码:

注:由于声明的是实现类new UserBizImpl(),所以调用的是实现类UserDaoImpl中重写后的登录方法

<%
    //表示层doLogin 调用 业务逻辑层(biz)
     IUserBiz userBiz=new UserBizImpl();//李氏替换原则
    //调用业务逻辑层的方法
    String message = userBiz.login(user);
%>

首先新建业务逻辑层接口对应的实现类:

Web开发之回顾总结&三层架构_第1张图片

IUserBiz.java接口代码:

package com.biz;
import com.pojo.User;
/**
 *	IUserBiz:I代表接口,UserBiz代表用户的业务逻辑
 *	IUserBiz:针对用户的业务逻辑的接口
 */
public interface IUserBiz {
	String login(User user);//在接口中直接声明登录方法,不用代码体{}
}

UserBizImpl.java接口实现类中

重写接口中的登录方法-----面向接口编程:

1.编写接口

2.实现接口

3.使用李氏替换原则来声明接口

4.调用接口的方法

UserBizImpl.java实现类代码:

package com.biz.impl;
import com.biz.IUserBiz;
import com.dao.IUserDao;
import com.dao.impl.UserDaoImpl;
import com.pojo.User;
/**
 * 业务逻辑层:
 * 用户逻辑接口实现类:实现了IUserBiz接口,就必须重写接口中的方法
 */
public class UserBizImpl implements IUserBiz{
	//业务逻辑层(biz)调用 数据库操作层(dao)
	//李氏替换原则
	private IUserDao userDao=new UserDaoImpl();
	@Override
    //重写接口中的登录方法:
	public String login(User user) {
		//biz包:处理数据
		 //1.先拿到dao包的数据
        User u = userDao.queryByName(user);
        //2.处理数据
        if(u!=null){
            return "登录成功";
        }
		return "登录失败";
	}

}

连接了数据库后业务逻辑层UserBizImpl.java实现类代码: 

Web开发之回顾总结&三层架构_第2张图片

理解上图代码:

login方法中传入的参数就是用户对象,是用户传入的;用户u对象是userDao中从数据库拿出来的用户对象,而业务逻辑层就是加工数据库访问层的原材料(User对象)的厨师,上图的加工是将User中的用户密码和用户输入的用户密码进行对比验证

上面代码中,重写接口中的登录方法中的代码即:业务逻辑层调用数据库访问层 

先新建数据库访问层接口和对应的实现类:

3ecc9c7b39dd47579ad162debd7e401f.png

 业务逻辑层IUserDao.java接口代码:

package com.dao;
import com.pojo.User;
/**
 *针对数据库操作的接口
 */
public interface IUserDao {
	//查询方法
	User queryByName(User user);
}

 业务逻辑层UserDaoImpl.java实现类代码:

package com.dao.impl;
import com.dao.IUserDao;
import com.pojo.User;
/**
 *用户的数据库操作接口实现类
 *实现了:IUserDao接口,重写查询方法
 */
public class UserDaoImpl implements IUserDao{
	@Override
	public User queryByName(User user) {
          //简写验证
		  if("aa".equals(user.getUsername())&&"123".equals(user.getPassword())){
	            return new User("","");
	        }
        //可写连接数据库的代码:根据用户名和密码去数据库查询数据,要写DBHelper类
		return null;
	}	
}

连接数据库时UserDaoImpl.java实现类代码示例:返回User对象

数据库访问层功能只是从数据库拿到数据,不对数据做任何改变加工,直接将拿到的数据返回给业务逻辑层:这里就是返回一个用户User对象

Web开发之回顾总结&三层架构_第3张图片

最后,在开发web项目时使用三层架构通常可以先编写dao层和dao层接口,再编写biz业务逻辑层接口和对应的实现类,想知道具体写法,点点关注,后期会再更新

你可能感兴趣的:(Web,java,html5,后端,前端,web)