Java web Servlet 三层架构(对比.net 三层架构)

  之前写了一篇Asp.Net 三层架构的介绍,刚好最近玩了一下java web,嗯,好的,正题开始:

    1. 结构名词:之前介绍了.net三层架构的习惯叫法叫做DAL(数据访问层),BLL(业务逻辑层),PL(表示层),除此之外再加一个Model辅助层里面包含与表对应的类和一个DBHelper类

   而java中习惯性叫法略有不同,也只是叫法不同,思想还是一样的,java叫:DAO(数据持久),Service(服务层),Servlet(PL表示层),同常也带一个辅助层

2.实操(itellij 专业版,注意必须是专业版)

(1)创建web项目

先创建一个普通项目:

Java web Servlet 三层架构(对比.net 三层架构)_第1张图片

然后添加框架支持:

选中项目然后右键

Java web Servlet 三层架构(对比.net 三层架构)_第2张图片

 然后照做,勾好点确定:

Java web Servlet 三层架构(对比.net 三层架构)_第3张图片

 src下建一个软件包通常叫Servlet,也就是Servlet层所在

 Java web Servlet 三层架构(对比.net 三层架构)_第4张图片

 

 

(2)创建servlet 项目,2023版之前的itellij 创建项目如果没有找到servlet 网上有很多行之有效的方法(当然,如果没用也可以看下去,我这个方法不挑版本),2023版的itellij 由于现在servlet不流行了,官方已将模板从idea移除,需要建自定义模板:

官宣:

官宣地址:

d2023.1 更新后无法创建 servlet、Web 过滤器、Web 侦听器:IDEA-316701 (jetbrains.com)

自定义模板功能位置:

英文菜单:

Java web Servlet 三层架构(对比.net 三层架构)_第5张图片

中文:

Java web Servlet 三层架构(对比.net 三层架构)_第6张图片

模板:

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "${Class_Name}", value = "/${Class_Name}")
public class ${Class_Name} extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
 

 在Servlet包中建Servlet类:

Java web Servlet 三层架构(对比.net 三层架构)_第7张图片

报错了,因为没有导包 :

Java web Servlet 三层架构(对比.net 三层架构)_第8张图片

别慌,不用导,光标移到标红处,直接alt +enter,然后你懂的:

Java web Servlet 三层架构(对比.net 三层架构)_第9张图片

 或者把光标移上去:

Java web Servlet 三层架构(对比.net 三层架构)_第10张图片

 直接下载

Java web Servlet 三层架构(对比.net 三层架构)_第11张图片

好了

Java web Servlet 三层架构(对比.net 三层架构)_第12张图片

 

 

(2).创建好项目后,另外三层的包也建好(pojo是我的一个辅助层,具体和上面说的一样):

Java web Servlet 三层架构(对比.net 三层架构)_第13张图片

(3)写好数据表类,一张表对应一个类

Java web Servlet 三层架构(对比.net 三层架构)_第14张图片

(4)从dao层开始处理需求:

从数据库获取数据、增删改的代码都搞里头:

我这里用了接口来对方法的层与层之间的调用做了一个统一规范,您要嫌麻烦直接就写一个GradeDao(命名规范通常以Dao结尾)这样类似的类的就好了,然后增删改方法搞里头,毕竟三层架构只是一种思想,具体实现还得看您自己

Java web Servlet 三层架构(对比.net 三层架构)_第15张图片

 (5)Service层调用Dao层:

GradeDao gradeDao=new GradeDaoImpl();是调用GradeDao 这个接口的实现类,也有叫继承类的

您要不用接口,直接就GradeDao gradeDao=new GradeDao();调用Dao层的类和方法

Java web Servlet 三层架构(对比.net 三层架构)_第16张图片

 (6)Servlet层调用Service层

这里的doGet就是get方法的访问方法,还有一个doPost就是post

代码说明:

上面我那个删除功能用的是ajax局部刷新,下面那个展示编辑页的数据用了同步,还是那句话,具体看您。加uft-8的代码部分是为了不让中文乱码,Gson 是一个谷歌的一个转json格式的库,github地址:GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back

获取前端传过来的参数用:request.getParameter(参数名) 参数名需要同前端定义的一致

 Java web Servlet 三层架构(对比.net 三层架构)_第17张图片

 异步的话就正常按照ajax的使用流程来走就ok了,我这里用了vue+jQuery

Java web Servlet 三层架构(对比.net 三层架构)_第18张图片

 同步的话可以这样:

<%

//这里写java代码,前面Servlet里面setAtrribute,这里就getAtrribute

%>

这段代码在html代码里穿插java代码,用java 循环构建多个option标签,里面取值用<%=你的java对象%>

假如<%=grade.getGradeId()%>取到的值为1,<%=grade.getGradeName()%>取到的值为“一年级”,那么编译过后就是

 

Java web Servlet 三层架构(对比.net 三层架构)_第19张图片

 

 

 

 

你可能感兴趣的:(java,intellij-idea,servlet)