021 ssh综合(3)

====================

之前已经实现了 注册 登录 添加客户  分页查询客户

现在来写上传的功能

下面是上传相关的组件或第三方包

现在使用的是struts2的默认拦截器里,有upload

先在add.jsp里添加文件上传的表单项,这个name要注意一下

现在就需要修改save方法了

这是拦截器的源码,而inputName就相当于表单提交过来的name

而在action里提供的3个属性,前面必须是和表单的name一样,后面的必须是固定的

而且必须提供set方法,因为采用了属性驱动

需要随机文件名和多级目录

这个replace是替换 - 因为UUID生成的随机码会有-

目录分离有一个固定的算法

这里只做了2级目录分离,是16的2次方个目录

直接copy,现在就可以测试了

然后把路径保存到数据库

在customer里添加一个字段

映射里也要添加

补充代码和action

还需要在数据库添加一列cust_image

现在设置拦截器

因为如果上传的文件过大,就会报错

我们可以在struts.xml里配置大小,这是上传文件的总值大小,还有一个单个文件的大小

这个maxinumSize就是单个文件的大小,下面的是允许的类型(在源码里面看,先搜struts-default.xml

找到对应的拦截器,然后搜类,前提是要有源码)

单个文件的就不是在全局配置里了,而是在action里,下面的一个是拦截的类型,如果类型不对,会出异常的

产生input异常,所以上面要加一个input的返回值,返回本页面,在add.jsp页面也要加一个显示错误信息的

错误信息一定要加

然后就是删除客户,在list.jsp里修改表单

需要传入id

写action

找到就返回对象,没找到就返回null

记得还需要删除客户对应的图片

删除完就重查一下

修改用户的信息功能,把add.jsp里的内容直接覆盖edit.jsp

左边的是struts2传统的方式,右边是struts2特有的方式,默认如果名称一样,那么就不需要写value

而用第二种,是不需要push数据的,因为action整个会放到值栈里,但是需要get方法

下面的input可以删掉了,上面的struts2标签只要填入name即可,会自动回显数据

后面的value要填入也行,但是必须用%包起来,代表强制解析

查看jquery的文档,属性那里有

然后回显数据,还需要把下拉框的那些数据也选中了

但是js里是不能使用struts2的标签库的

但是js力可以使用EL表达式,下面这句是判断属性值,在jquery的文档里有下面的写法

还需要放id回来

如果使用的是s:form标签,那么不需要写工程名, 里面还可以加一个namespace

写action,但是如果文件上传修改了,那么就需要判断是否修改了

如果修改了,那么就删除之前的图片

然后重新创建一个文件

写dao和返回页面

条件查询客户列表

在list.jsp里的客户名称那里,多复制几个td即可

先引入高版本的jquery

把之前在add.jsp里的请求也复制到这里

筛选按钮,提交的是findAll,而我们findAll里面用的是 离线条件查询,所以直接在findAll里面加条件即可

直接添加条件, Restrictions.qe相当于where xx.id=xx.id

还有level和industry也需要加判断

现在还有一个问题,那就是如果 假如点了一个下拉条件,然后点筛选,这个值下拉框的值就没了

这时候再点下一页,那么条件就没了,条件一没有,那么就是查询所有

这时候就应该数据回显

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/83475602