日常报错
看到这个两个action没,Struts框架里面,Action类不写在action包里面会找不到,类的名字后面不取Action,也会报错。如果你问原理?咱也不知道,咱也不敢问
=====================================================================
这是一个数据库表的多对一结构,如果在映射文件里面存在两个相同外键,就会出现错误提示你应该添加 should be mapped with insert=“false” update="false" 这样的语句。去除多余的外键就可以了。
========================================================================
这个是驱动模型,不要忘记前面的名字,不然获取不到值,会报空指针异常!
=====================================================================
下面这句错误提示
Caused by: The Result type [json] which is defined in the Result annotation on the class
这个错误,是因为action类使用Ajax时,类上面没有加
@ParentPackage(“json-default”)
的注解!
Ajax是js页面,在js里面的==判断用于比较值,不用来比较地址。
用struts2框架,Ajax传的值,需要添加get set方法。不然data值为空;
======================================================================
获取绝对路径,上传文件
使用ServletActionContext.getServletContext()的getRealPath属性,需要导入Tomcat的配置。
========================================================================
出现这个错误,是因为sql的原因,无非就是传的值为空与数据库设置的属性是否为空不符合,继续看错误日志都会有提示。我出现错误的原因是因为 传输过去的字符串长度过长。
=======================================================================
千辛万苦,终于写完了 图片的回显和上传
回显功能是百度找到的,我的能力还不足以自己写出来。下面的代码看起来不难,但是挺折磨人的,你不知道如何下手。
<td>
添加线路类型图标:
[外链图片转存失败(img-dB2DDIds-1562123988390)(https://mp.csdn.net/mdeditor/$%7BlineType.icon%7D)]
</td>
<td>
请选择图片:
<input type="file" name="file" id="file" onchange="imgChange(this);"/>
</td>
<script>
// 选择图片显示
function imgChange(obj) {
//获取点击的文本框
var file =document.getElementById("file");
var imgUrl =window.URL.createObjectURL(file.files[0]);
var img =document.getElementById('pic');
img.setAttribute('src',imgUrl); // 修改img标签src属性值
};
</script>
public String insertLineType(){
//获取图片地址
String path = ServletActionContext.getServletContext().getRealPath("/ht/images/imgs/"+fileFileName);
String contextPath ="/ht/images/imgs/"+fileFileName;
File file1 = new File(path);
try {
FileUtils.copyFile(file,file1);
} catch (IOException e) {
e.printStackTrace();
}
//获取添加的当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(new Date());
//持久化当前对象
lineType.setLineTypeId(lineType.getTypeName());
lineType.setIcon(contextPath);
lineType.setTime(time);
lineTypeService.insertLineType(lineType);
return "success";
}
文件上传
1.创建文件 选择 绝对路径。
2.在存储地址到数据库 时选择 相对路径,因为在jsp页面 获取文件 时只能通过 相对路径 获取到文件。
=======================================================================
空指针异常
1.idea自动生成实体类,关系连接没有实体类,关系连接没有实例化。调用集合时会报空指针异常!
====================================================================
这是hibernate的延时加载策略,提升性能。将 lazy=“false” 加入连接关系,保持session开启状态
====================================================================
继上一个坑之后又会出现第二个坑。
我还是觉得上一个问题处理得不好,导致出现第二个坑!
由于session一直开启。当创建新的session时,具有相同标识符值的不同对象已经与会话相关联,通俗来讲就是,存在相同session。这个错误怎么解决呢?
getSession().clear();
加上这个,将所有存在的Session清除!
====================================================================