文章目录
复习
Java基础、MySQL、Servlet、JDBC。
Servlet、JDBC和MySQL是Java Web开发中常用的技术。Servlet是一种规范,对于B/S结构,需要一个Server处理由Browser发送的请求,Servlet是一个处理这些请求的模块,通过Servlet可以处理浏览器的请求并且不涉及底层源码。JDBC(Java Database Connectivity)是一种用于访问数据库的API,它提供了一种标准的方法来连接数据库并执行SQL语句。MySQL是一种流行的关系型数据库管理系统,它可以用来存储、管理和检索数据。
在写项目时,这些技术通常协同工作。例如,当用户在Web应用程序中提交表单时,Servlet会接收到请求并处理表单数据。然后,Servlet可以使用JDBC API来连接MySQL数据库,并执行SQL语句来查询或更新数据。最后,Servlet将结果返回给客户端,以便在Web页面上显示。
Servlet、JDBC和MySQL是Java Web开发中重要的技术,它们分别负责处理客户端请求、访问数据库和存储数据。
MVC结构
MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
- M:Model,模型。
完成具体的业务操作,如:查询数据库,封装对象 - V:view视图。JSP、HTML等来进行数据展示
- C:Controller控制器。 Servlet
获取View的请求
调用模型将数据交给视图进行展示
三层架构
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层[表示层]UI(User Interface layer)、业务逻辑层BLL(Business Logic Layer)、数据访问层DAL(Data access layer)。
区分层次的目的即为了“高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
三层架构与MVC两者的关系
暑期项目总体结构
controller
- 对应MVC的控制器
- 对应三层架构中的表示层的web后台
仅负责前端数据的传输(与前端界面的交互)
dao
- 对应MVC的模型层中的负责与数据库交互的JavaBean
- 对应三层架构中的数据访问层中数据库的增删改查部分
仅负责业务逻辑中与数据库的交互部分
entity
- 实体类
- 对应MVC的模型层中的实体类作业的JavaBean
- 对应三层架构中的数据访问层中数据对象实体类部分
- Java是面向对象的编程语言,而面向对象的三大特性中有一点非常重要,就是封装性,实体类就是我们对所研究对象的抽象,我们将该对象所需要使用到的性质封装到的实体类的私有成员变量中。
我们建立数据库的数据表的时候其实也是建立一张属性表,每一条记录相当于一个对象。
filter
- 过滤器
- 属于MVC的控制器层的一部分
- 属于三层架构中的表示层的web后台的一部分
- 可以将一些权限控制,以及处理该业务前需要做的一些预处理操作;处理业务完的后续的一些特殊处理工作放在这个包里。
它的配置也是放在web.xml里的,与servlet类似
service
- 对应MVC的模型层的处理业务逻辑的部分
- 对应三层架构中的业务逻辑层
service接口置于service包下,里面存放着很多处理业务逻辑的方法。
impl里是实现该接口的类,存放对应接口里每个方法实现的逻辑。命名一般与对应接口名也相对应。
例如:CheckService的实现类命名为CheckServiceImpl这样可以更清楚、更有条理地管理业务逻辑。(dao也可以这样写,更清楚一些)
强调:这个包下只放置业务逻辑部分的代码!
util
- 工具类
放置需要经常使用到的工具类,比如你们已经学过的JDBC的连接配置及需要经常用的方法。
里面一般都是静态方法,直接用工具类的类名即可调用该方法,便于使用。
test
- 测试类
这里面放的是测试类,里面可以写一些需要测试正确性的代码,可以直接运行查看该段代码的执行结果。需要导入junit的jar包,才可使用。
web
这个当然不用多说,现在大家现在一个都应该会建立web项目,以及为项目添加jar包了。
总体项目结构
tips
一般要实现的业务功能有很多,所以会有很多controller,以及很多个请求路径,web.xml文件也会很冗长。
解决方法
web.xml
<servlet>
<servlet-name>Login</servlet-name>
<!--对应的登录注册相关的controller都写在LoginController里-->
<servlet-class>controller.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<!--映射所有为“/user/”型式的请求路径-->
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
LoginController.java
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求路径
String uri = req.getRequestURI();
switch (uri){
case "/user/login":
//doLogin(req,resp)里写登录的相关操作
doLogin(req,resp);
break;
case "/user/register":
doRegister(req,resp);
break;
case "/user/exit":
doExit(req,resp);
break;
}
}
内网穿透(natapp)
什么是内网穿透?
内网穿透,也称为NAT穿透,是一种技术,它允许外部网络访问内部网络中的计算机或设备。这通常用于在没有公网IP地址的情况下,让外部网络能够访问内部网络中的Web服务器或其他服务。内网穿透可以通过使用内网穿透软件来实现,例如frp、ngrok和花生壳等。
内网穿透可以理解为一个专用信道,这个信道是由内网机器(Client)发起向外网服务器(Server)的连接,目的是使处于外网的客户端可以通过外网服务器访问到内网的服务。
natapp购买
.