JavaWEB各工具的功能及配合
一、各工具的功能
-
HTML
超文本,用于页面框架的构建及内容的显示,内容包括层、段落、表格、表单等。
-
CSS
用于对HTML页面的美工,比如:表格框线的样式、颜色、粗细;文字的颜色、字体等;层之间的布局关系
-
Javascript
事件触发的页面内部分内容的动画,比如:鼠标移动到该区域,该区域就会变色;或鼠标点击某处,会删除等
-
Tomcat
是一款实现类JavaEE规范中的Servlet和JSP的轻量级服务器,客户端可通过tomcat实现与数据库之间的交互
-
Servlet
JavaEE规范中的一种,通过服务的调用,匹配不同的请求,与数据库交互,并响应到html页面上
-
Thymeleaf
Java语言的模板引擎之一,将Servlet组件中获取到的数据库内的数据(为集合形式),动态的渲染到html页面中,是HTML页面的内容时刻与数据库中的数据同步更新。且Thymeleaf语言也是嵌套在HTML语言内的。
二、流程逻辑图
三、几处跳转写法的甄别
-
@WebServlet注解,一定要加斜杠
@WebServlet("/add.do")
-
html文件内的跳转标签
第一种:转到具体的html文件上,要加斜杠及后缀文件格式 <a th:href="@{/add.html}"></a> 第二种:转到对应的组件上,并传参 <a th:href="@{/edit.do(cid=${cust.id})}"></a> 第三种:转到对应的js文件上 <a th:onclick="|delCust(${cust.id})|"></a> 第四种:普通html表单请求 <form action="add.do" method="post"> 第五种:已经组装的html内的表单请求 <form th:action="@{/update.do}" method="post">
-
js文件内跳转到组件
function delCust(s) { if (confirm('是否确认删除')) { // sid是传递在url框上的参数,同时也是被del.do所对应的组件所获取的参数来源 window.location.href = 'del.do?sid=' + s; } }
-
Servlet组件对html文件的组装
// 确定保存作用域的方式,此处是请求保存作用域,也可以是session req.setAttribute("cu" ,customer); // 调用模板处理方法 super.processTemplate("edit",req,resp);
-
组件跳转到组件
// 服务器内部转发 req.getRequestDispatcher("index").forward(req,resp); // 重定位 resp.sendRedirect("index");
-
没有被组装的html文件内不能使用thymeleaf语言,且base标签一定要写对(很重要)
<!-- href中,localhost:8080/后跟着的, 一定要和tomcat服务器配置中的application context的参数一样,和模块名一点关系都没有 --> <head> <meta charset="UTF-8"> <base href="http://localhost:8080/servlet/" > <link rel="stylesheet" href="CSS/index.css" > </head>
-
html链接css与js
链接css文件:href <link rel="stylesheet" href="CSS/index.css" > 链接js文件:src <script language="JavaScript" th:src="@{js/index.js}" ></script>
-
href和src的区别
href :表示超文本引用(hypertext reference),在 link和a 等元素上使用。
src : 表示来源地址,在 img、script、iframe (嵌套html)等元素上
四、错误汇总
-
SQL语句出现语法错误,出现空页面
① 增加了占位符,却没有传入足够的参数
② 数据表名没有写正确
③ 字段名没有写正确
④ 没有起与bean中的类内属性名相同的别名
-
NumberFormatException:数字格式化异常
req获取参数后,得到的字符串被转换为int类型时,没有提前判断该字符串是否不为空。因为字符串如果为null,那么就无法转换为数字。
String pageStr = req.getParameter("page"); pageOn = Integer.parseInt(pageStr);
正确的写法
String pageStr = req.getParameter("page"); if (StringUtil.isNotEmpty(pageStr)) { pageOn = Integer.parseInt(pageStr); }
-
跳转处的写法一定要正确
-
链接js文件处误写成了href=,正确应写成src=
-
ClassCastException:类型无法转换
使用count( )聚合函数,其返回的是bigint类型,故使用DAO时,其返回的数据类型应设为Long,不能直接设置为Integer
-
like模糊查询
如果要全部查询,要写成 : like = “” 或 like= “_” ,绝对不能是(空格)like = " "