(三)模仿学习-Action数据的模仿
我们从网上下载一份代码学习,模拟如果在实际工作中,我们入职的时候会首先拿到一个不复杂但是技术比较老的项目,因为作为新人很难去直接参与大而且新的项目进行开发。
- 我们从网上搜一份代码,先下载下来,代码如下:
代码的地址:
https://url56.ctfile.com/f/34653256-665303764-679728?p=7567 (访问密码: 7567)
- 将数据库导入到我们本地
- 将项目导入到本地环境中
- 首先我们将项目拷贝到我们的工作开发环境中
- 在IDE中导入(Eclipse、MyEclipse、IDEA都可以)
然后
继续
项目出现在导航栏
- 改动数据库连接的地址
因为所有的项目一定会有数据库的地址配置,不管是用的那种框架。所以我们需要找到对应的文件进行更改。修改下面的数据库密码和账户为自己的数据库地址。
- 一般此时我们只要下载的项目没问题,就可以运行了,我们使用Tomcat作为应用服务器,但下载的这个项目需要做一下转换,将项目转换一下,转换的位置如下:
转换项目
转换完进行勾选
接下来更改一个目录
目录更改如下
添加到Tomcat应用服务器中
然后我们可以运行代码了,项目没有报错
我们在浏览器中进行访问就可以得到对应的项目
点击登录后如果出现连接不上,更换系统中的MySQL的连接包就可以。
- 创建数据库
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
- 创建实体类
- 模仿包里的文件,编写我们自己的实体类
创建实体类,名字模仿包里的文件,比如数据表交t_topic,会有两个文件分别叫TTopic.java和TTopic.hbm.xml这两个文件,我们也创建这两个文件。
- 模仿这两个文件完成里面的内容
先模仿第一个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的一些专业术语,我们如果对这个不感兴趣或者以后工作用不到,就模仿的写就可以了。这几个概念是持久状态,托管状态,瞬时状态。
我们直接模仿了
还有一个
这个可以理解为,获取实例对象。
- 模仿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
测试结果:
(三)模仿学习-Action数据的模仿相关推荐
- (二)模仿学习-DAO数据的模仿
我们从网上下载一份代码学习,模拟如果在实际工作中,我们入职的时候会首先拿到一个不复杂但是技术比较老的项目,因为作为新人很难去直接参与大而且新的项目进行开发. 我们从网上搜一份代码,先下载下来,代码如下 ...
- Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
Python 数据处理系列博客来啦! 本系列将以<Python数据处理>这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理.书中有些地方讲的不太详细,我会查阅其他 ...
- C++PrimerPlus 第三章 处理数据
C++PrimerPlus 第三章 处理数据 3.1 简单变量 3.1.1 变量名 3.1.2 整型 3.1.3 整型short.int.long和long long 3.1.3.1 运算符sizeo ...
- Streamr助你掌控自己的数据(2)——三种整合数据至Streamr的典型场景
博客说明 所有刊发内容均可转载但是需要注明出处. 三种整合数据至Streamr的典型场景 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数 ...
- 机器学习三要素之数据、模型、算法
参考:https://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8/topic/5b1086eccad6fe44db4c1268 1. 机器学习 ...
- Python中将三个列表数据zip起来并遍历(Iterating through three lists in parallel)
Python中将三个列表数据zip起来并遍历(Iterating through three lists in parallel) 目录 Python中将三个列表数据zip起来并遍历(Iteratin ...
- 加码 2000 亿还不够,阿里云再建三座超级数据中心加速新基建
作者 | 伍杏玲 出品 | 程序人生(ID:coder_life) 今年4月,阿里云宣布将在3年内投入2000亿,用于研发云操作系统.服务器.芯片.网络等技术和面向未来的数据中心建设.在 6 月 9 ...
- Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
Linux下使用SSH.Crontab.Rsync三工具实现数据自动备份 作为网管人员大概都无一例外的经历过系统备份,尤其是重要系统的备份.重要数据库系统的备份工作.由于备份是个频繁而琐碎的工作,如何 ...
- [原创]分布式系统之缓存的微观应用经验谈(三)【数据分片和集群篇】
分布式系统之缓存的微观应用经验谈(三)[数据分片和集群篇] 前言 近几个月一直在忙些琐事,几乎年后都没怎么闲过.忙忙碌碌中就进入了2018年的秋天了,不得不感叹时间总是如白驹过隙,也不知道收获了什么和 ...
最新文章
- Mac OS X中MacPorts安装和使用
- 关于 form表单 嵌套问题的解决方案
- python类的方法三种访问权_Python基础33-面向对象(继承资源(属性与方法)的使用注意)...
- 网易云信稳定背后的秘密
- 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
- PAT_B_1004_Java(20分)
- mysql awr 上海用户组_mysql awr v1.0.3修正说明以及发布
- TensorFlow实验(3)
- IntelliJ IDEA打jar时,MANIFEST.MF内容出错
- java实现省市区的联动,chosen实现省市区三级联动
- 31-管家婆家庭记账软件
- macOS配置使用ODB
- Java 文件上传 三种方式
- C++:实现量化存在净额结算协议的交易对手风险下的利率互换估值公式测试实例
- PHP file_get_contents函数详解
- java entity tostring_EntityUtils.toString(entity)处理字符集问题解决
- [MP3]MP3固件持续分享(2019.1.25)
- Linux中彻底删除文件
- 南昌大学计算机考研学硕,南昌大学电子信息工程专硕考研心得
- python 词向量_利用python实现词向量训练----
热门文章
- 手机信息采集 ——基于ebay网站Apple手机案例分析
- 图文并茂详解服务器密码忘记了怎么办?
- 采用16线激光雷达调用cartographer室内定位
- 算法工程师-机器学习-数据科学家面试准备[外企和国外公司、春招、秋招]
- Zigbee协议与开发 - 协调器/路由器节点(EB板)程序结构分析
- C语言中求余运算符的注意事项
- 火狐书签备份_备份和还原Firefox密码列表
- 电脑安装双系统(win+Linux)的一些重要步骤总结
- android桌面 文件夹路径是什么原因,安卓系统桌面快捷方式默认在哪个文件夹
- Linux安装Tomcat(非Docker安装、开放端口)