当前位置: 首页 > news >正文

(三)模仿学习-Action数据的模仿

我们从网上下载一份代码学习,模拟如果在实际工作中,我们入职的时候会首先拿到一个不复杂但是技术比较老的项目,因为作为新人很难去直接参与大而且新的项目进行开发。

  1. 我们从网上搜一份代码,先下载下来,代码如下:

代码的地址:

https://url56.ctfile.com/f/34653256-665303764-679728?p=7567 (访问密码: 7567)

  1. 将数据库导入到我们本地

  1. 将项目导入到本地环境中
  1. 首先我们将项目拷贝到我们的工作开发环境中

  1. 在IDE中导入(Eclipse、MyEclipse、IDEA都可以)

然后

继续

项目出现在导航栏

  1. 改动数据库连接的地址

因为所有的项目一定会有数据库的地址配置,不管是用的那种框架。所以我们需要找到对应的文件进行更改。修改下面的数据库密码和账户为自己的数据库地址。

  1. 一般此时我们只要下载的项目没问题,就可以运行了,我们使用Tomcat作为应用服务器,但下载的这个项目需要做一下转换,将项目转换一下,转换的位置如下:

转换项目

转换完进行勾选

接下来更改一个目录

目录更改如下

添加到Tomcat应用服务器中

然后我们可以运行代码了,项目没有报错

我们在浏览器中进行访问就可以得到对应的项目

点击登录后如果出现连接不上,更换系统中的MySQL的连接包就可以。

  1. 创建数据库

CREATE TABLE `t_zztl` (

`pid` INT(11) NOT NULL AUTO_INCREMENT,

`xdata` VARCHAR(100) DEFAULT NULL,

`ydata` VARCHAR(100) DEFAULT NULL,

PRIMARY KEY (`pid`)

) ENGINE=INNODB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

  1. 创建实体类
  1. 模仿包里的文件,编写我们自己的实体类

创建实体类,名字模仿包里的文件,比如数据表交t_topic,会有两个文件分别叫TTopic.java和TTopic.hbm.xml这两个文件,我们也创建这两个文件。

  1. 模仿这两个文件完成里面的内容

先模仿第一个java文件

序列化和字段

这是这个实体对应的数据表创建语句,可以和上面的字段进行对应。,我们字段的类型和t_topic类似的有pid和author(所以我上面创建语句是按照这个项目里的形式创建的不是乱创建的,就是为了和它的字段匹配)

我们只有3个字段,所以字段会比较少,其中get/set字段自动生成。

多余的字段可以选择不写,但是t_topic中的字段也是少于TTopic.java中的字段?是因为只要包含数据库中的字段,可以在TTopic.java中写更多的属性是影响的。

TTopic.java里面有构造函数,我们也生成两个构造函数

自动生成一下,也可以自己写

后面没有了模仿的了,我们来看TTopic.hbm.xml。因为hbm.xml是hibernate的配置文件,所以要按照这个命名,如果你知道就直接写就可以了。

按照上图里的内容,我们做下面的更改

2、我们继续模仿DAO

先看我们的模仿文件TTopicDAO,先读这个文件。

根据这个文件的内容,我们需要写下面的部分

extends HibernateDaoSupport表示继承Hibernate的框架支持

private static final Log log = LogFactory.getLog(TTopicDAO.class);是表示日志的

然后就是字段属性

我们已经知道t_topic是有这样的字段

所以这些字段和数据库是有关系的

那么我们取字段也是按照数据表中的字段保留

继续模仿,下面这个在注释里写了什么都不做,但是我么可以通过名字和修饰符判断出来是要进行初始化的。

接下来这个方法从名字是看是要用来保存的,其中log.debug和log.error类似于system.out.println()使用来显示日志信息的,可以选择不要。只要更改实体就可以了。

更改后看一下

下面这个类似,表示的是删除

下面这个表示通过编号查询,所以有一个参数是id编号

我们把这两个复制过来进行改动

其中findById中一些内容注意

然后是下面的方法,这个可以理解为查询多个,多属性查询

这是更改后的,这个的用途可以理解为有多个字段查询的时候不需要单独一个个的写,比如通过xdata和ydata两个查询,就可以这个方法。

接下来的函数

这个函数通过名字我们就能知道这是通过属性或者字段去查询的,是单个属性字段。指定属性名和属性值的方式。

继续往后的函数

这个是通过某一个具体的属性完成的,我们只有三个属性,所以只需要写三个就可以了。但本质上是通过上面的属性名函数去查询的。

最后一个是查询所有的

这个是查询所有数据的,如果数据量不大可以使用,数据量大的话就不要使用了

接下来这几个函数涉及到

Hibernate的一些专业术语,我们如果对这个不感兴趣或者以后工作用不到,就模仿的写就可以了。这几个概念是持久状态,托管状态,瞬时状态。

我们直接模仿了

还有一个

这个可以理解为,获取实例对象。

  1. 模仿action包下的内容

创建我们的文件,这个地方有个习惯,大家起类名的时候进来要首字母大写,不要像这个系统这个样子。

然后看模仿类里的内容,这个action类似于controller层的作用,只不过比较简答,不那么复杂。

首先是继承类和主要属性

我们目前只有一个DAO,其中的属性和我们相关的目前只有pid 自动生成get/set方法

然后就是里面的方法,这个类主要处理的是页面过来的请求,那么我们目前只有一个请求,所以写一个方法就可以了。

上面这个方法带有view名称说明是个浏览作用的方法,我们选择模仿这个方法

更改之后就只有一个简单的成功值。

有一个问题,这个方法里并没有告诉我们返回的页面是哪个?所以还存在配置文件。

这个项目里有下面这几个配置文件。其它的可以自己看下,应该是不用我们做处理的。

struts.xml。

applicationContext.xml

在applicationContext.xml这个文件中我们可以知道,原来DAO和Action是需要配置的,所以我们将我们之前写过的类配置进来。

配置action和dao就可以了

先配置dao,这个位置不太要求,配置到上面框起来的部分,单独一行就可以了。

同理action也是如此。

其中property表示的是要注入的对象,就是这个注入的对象不需要你生成,框架帮你做了。一般也是配置文件里配置过的。

然后是struts.xml这个文件,这个里面就涉及到页面了。

下面就是我们要模仿的配置

我们配置的部分

根据这个配置我们需要创建一个JSP页面

内容呢,我们还是模仿其中一个JSP页面,此处我直接复制了。

然后我们运行查看一下我们的页面有没有问题

启动报错了,我们正好记录一下

错误信息

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dao.TZztlDAO] for bean with name 'TZztlDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com.dao.TZztlDAO

可以看到applicationContext.xml和TZztlDAO这个关键信息,我们去看看

还要改一个地方

还有个地方

还有一个错误

少配置了一个

如果发现总是报找不到文件的错误,可以查看Tomcat发布的位置中是不是没有生成编译的文件,我们目前遇到的问题是jar引入缺少一个导致的(如果没有遇到这个问题可以忽略)。

启动后我们访问地址查看一下

http://localhost:8080/bbs_anime/zztlview.action

测试结果:

相关文章:

  • 当下的网络安全行业前景到底怎么样?还能否入行?
  • 阿里巴巴面试题- - -多线程并发篇(三十七)
  • 猿创征文 | 【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库
  • 为什么Mysql底层采用B+树做索引?
  • 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第三章 网络工程-原始套接字与嗅探(1)主机发现工具与包嗅探
  • 如何在Spring JDBC 中获取自动生成的 ID
  • C语言—《动态版通讯录》
  • JSP+Servlet + Tomcat实现用户登录(五)使用listener实现在线(游客)人数统计【JavaWeb、无数据库】
  • 【SpringBoot】抽取公共页面方法
  • 应急响应(个人总结,非专业
  • memcpy内存比较函数;memset内存设置函数
  • 【0基础学习mysql】之DQL-聚合函数、分组查询及排序查询
  • 【Redis】回顾下Redis基础知识点,还记得哪些?
  • redis五种数据类型内部构造
  • 基于Vue+Element UI+SSM+SpringCloud的员工管理系统
  • EOS是什么
  • PHP变量
  • Python3爬取英雄联盟英雄皮肤大图
  • Python连接Oracle
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 搭建gitbook 和 访问权限认证
  • 京东美团研发面经
  • 前端
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 为什么要用IPython/Jupyter?
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 阿里云重庆大学大数据训练营落地分享
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)软件测试分工
  • (三分钟)速览传统边缘检测算子
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转载)CentOS查看系统信息|CentOS查看命令
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET : 在VS2008中计算代码度量值
  • .net2005怎么读string形的xml,不是xml文件。
  • .net反混淆脱壳工具de4dot的使用
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @RequestParam详解
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [AIGC] 如何建立和优化你的工作流?
  • [C/C++]数据结构 栈和队列()
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [ESP32 IDF]web server
  • [hive小技巧]同一份数据多种处理
  • [Java][算法 双指针]Day 02---LeetCode 热题 100---04~07