Jave课程设计个人博客(Sofp)

文章目录

Title:Jave课程设计个人博客(Sofp)

本博客为在课设设计的过程中,所遇到的具体问题的细化的博客。

Q0,用什么样的编译器更适合Java项目级别的开发?

  • 如果是针对Java项目的开发的话,使用IDEA会比Eclipse成熟很多。

  • Tips: 由于IDEA存在很多版本问题,所以在使用的时候,建议使用较新版本的IDEA,新版本的IDEA相对来说,问题会比较少一些。

  • IDEA2020版本的安装教程

  • 不同版本的IDEA之间的迁移: 在更新IDEA的版本的时候,先导出旧版本的IDEA的配置,然后安装好新版本后导入原有的配置,这样可以省去版本转换后需要重新配置信息的问题。

  • 在这里插入图片描述

Q1,对于一个JavaWeb项目来说,用什么样的开发模式更好?

  • web开发模式不同于我们日常接触的纯Java后端程序,所以一个好的开发模式能很好地提高我们的开发效率。

1. MVC开发模式

  • MVC开发模式
  • V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。
  • M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
  • C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

2. 本次项目中的包结构展示

在这里插入图片描述

2.1 前端部分:

  • 在本次项目中我们的前端主要用到了html和css来实现静态页面。
  • 一定程度上用了:axiosjsonvue来实现动态页面和页面的异步请求响应。

2.2 前后端交互部分:

  • 主要是用到了HttpServlet来实现前后端的数据传输以及一些页面跳转的控制。
  • 使用了Session作用域来在一次会话中保存了所需要保存的数据。
  • 使用了doFilter过滤器实现权限限制编码过滤

2.3 后端部分:

  • JavaBean
  • 使用了类似Javabean的标准来封装一个实体类。
    • 即在实体类中,仅声明了必要的属性,以及这些属性的S&G方法,并提供无参构造函数和有参构造函数。
  • 用DAO模式来实现对数据的管理:
    • 即用DAO接口来声明某一张具体的表所该有的存取数据的办法
    • impl(这个是一个包) 中具体去实现某一个DAO接口所定义的方法。

Q2,应该用什么样的项目管理工具来管理项目?

  • 使用Maven项目管理工具来管理项目
  • Maven

1. Maven的安装与配置

  • 去Maven官网下载一个版本合适的Maven,并进行安装和解压。
  • 在电脑的环境变量中配置MAVEN_HOME,并将解压好的路径加入环境变量中。
  • 配置好Maven的Setting文件中的本地仓库的地址。
    <localRepository> (这里是本地仓库的绝对路径) </localRepository>
    在这里插入图片描述
  • 在IDEA中设置Maven:
    在这里插入图片描述

当设置完成后,我们就可以通过IDEA来创建Maven项目了。

  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在Maven项目中(G,A,V)三个坐标可以唯一标识一个项目。
  • 每一个Maven项目都有一个pom.xml文件,用来描述项目信息以及管理项目的依赖包。在这里插入图片描述
  • 这是一个用来查询依赖信息的网站

Q3 如何搭载Tomcat到IDEA项目?

1. 首先要先将Tomcat搭载到IDEA:

在这里插入图片描述
在这里插入图片描述

2. 然后要将Tomcat搭载到IDEA的具体项目:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 关于Tomcat的编码问题:


Q4 在MVC开发模式下,项目编写的一般流程是怎么样的?

  • 在MVC开发模式下,我们开始一个项目的编写,最首先要做的事情是分析要在数据库中建一个什么样的表。
  • 然后,决定好在数据库中要建一个什么样的表后,把表中的属性抽象出来,转化为项目中的实体类,封装为JavaBean或者类似JavaBean.
  • 然后基于实体类,撰写实体类对应的DAO接口及其实现类。(这一块主要是用来进行数据从数据库中的增删改查
  • 完善了DAO接口后,就可以根据DAO层来撰写对应表单对应的服务,也就是Service层,这一层主要管的是实现某一个具体功能的业务逻辑
  • 写完了Service后,就可以开始写Servlet层,这一层不再是针对于具体的表单来写了,这一层是针对具体要实现的某一个功能来写,一个功能可能有一个以上的Servlet类。(servlet负责从前端接收参数,并对参数进行处理;同时需要调用后端的服务来实现从数据库中获取对应数据,并在service层完成逻辑判断后返回判断结果,使用逻辑判断的结果来作为页面跳转的条件。)
  • 写完servlet层后,再根据具体的参数传递通道设计前端应该留下的接口
    在这里插入图片描述

Q5 如何实现登录功能?

1. 实现登录功能:(以用户登录为例(管理员的登录实现逻辑相同))

1. 首先要实现登录的话,在实体类的设计中就需要设计账号和密码。
  • 于是对于用户类,在数据库中就需要进行如下设计。
    在这里插入图片描述
  • 数据库设计好实际的表单后,在程序中对于该数据的存储就需要建立对应的实体类来存储(实体类按JavaBean的模式来,只是作为一种模型)
    在这里插入图片描述
2. 设计好实体类后,就要设计具体的DAO层来实现对数据的管理。(先规定对应表的Dao层然后再撰写实现类)

在这里插入图片描述
由于登录操作只涉及了(以输入的用户名为基础,从而从数据库中找到对应的用户名的信息,并以User类的形式返回。)即对User的查找的操作,所以我这里只以select为例。
在这里插入图片描述
在这里插入图片描述
这里是使用典型的JDBC的模式来实现用户数据的搜索。

  • 先建立连接。
  • 判断是否查找成功是通过判断数据集返回的数据的行数来判断
  • 用while(rs.next)形式对每一行数据进行存取。
  • 最后以User类的形式返回。
3. 讲完DAO层讲业务逻辑层。

在这里插入图片描述

由于service层的服务是建立在对数据库中所建立的表的基础上来设计功能的,所以每一个表都对应一些服务,都必须设计对应的服务接口,以及其实现类。
在这里插入图片描述

Service层的业务逻辑:

  • 首先是要用刚才实现好的DAO层new一个对应的实例对象,根据本层中上册传入的用户名来在数据库中对数据信息进行查寻。
  • 如果能找到信息,DAO层会返回一个User类,这时候user就不会为空,我们就可以拿从上层传入的密码与从数据库中用用户名查找到的密码来进行比较,如果匹配成功的话,那就代表登录成功了,返回User类供上一层级作为判断条件。
  • 如果不匹配或者数据库中找不到的话,那就返回null供上一层进行判断。
4. 最后是Servlet层:

在这里插入图片描述

  • Servlet层与前端进行交互,从前端的form表单获取用户名和密码的数据。
  • 然后new一个服务层的对象传入用户名和密码的参数来进行用户登录的业务逻辑的判断,判断的结果以返回的User类的状态来判定。
  • 若User类不为null,说明后端业务判断为登录成功,这时候需要在Session域中保存好user信息(后面论坛中用户的各种功能都依赖这个步骤来实现。)
  • 并且往下调用另一个用于跳转的Servlet来实现登录跳转。(这里这样设计是处于安全考虑,在下午的过滤器部分会详细解释。)
  • 如果登录不成功的话,就让页面重定向到首页,便于用户重新登录。

1.登录功能的权限限制:

(1)在实现完登录功能后,我发现了一个很重大的问题,那就是,似乎在不加限制的情况下,如果我直接修改URL的资源路径,似乎就可以不用经过登录,也能够访问到论坛主页,这是一件很严重的安全问题!
(2)于是我增加了过滤器来实现权限限制。

在这里插入图片描述

  • 由于论坛部分的资源我统一存在html包下,所以过滤器的拦截目标路径是设置为在这里插入图片描述
    拦截了html后的所有资源,当用户没有实现登录记录的时候。
  • 权限限制的实现是通过对Session作用域中的对应类的值的判断:如果登录成功的话,我会将登录信息保存到一个实体类并存入当前会话的Session作用域中。

Q6,如何实现前后端数据传输的编码问题?

实现编码过滤(这里是从servlet教程中学会了直接复用的代码)
在这里插入图片描述

  • 原理是过滤器无论在请求还是在响应的过程中,都始终存在于浏览器与服务器之间,所以,设计编码过滤的过滤器来统一对请求报文的字符格式和响应报文的字符格式进行统一定义。

Q7,如何将信息从后端提取后打印到前端?

管理员获取所有用户信息的部分。

  • 这一部分中Dao层获取数据和service层传递DAO层获取得到的数据逻辑同上,这里不赘述。
  • 新的点主要在于在servlet层中,这里需要实现的是将用户数据展示在前端上,所以需要用到的前后端交互的技术比较不一样。
  • 首先需要用到Json技术,在servlet层返回数据前要先将后端传回的数据封装为Json字符串。
    在这里插入图片描述
  • 然后前端是使用vue框架来接受后端返回的数据:(这一部分我是复用了团队成员实现类似功能的代码,在接口上进行改造)
    在这里插入图片描述
    在这里插入图片描述
  • 什么是JSON?
  • 什么是vue框架?

猜你喜欢

转载自blog.csdn.net/m0_54524462/article/details/122445148