说明:
一套系统可以大致分为:
前台—前端页面
后台—后台程序(web)
{对于初学者来说,在这个简单项目中,我们大致分为5天完成}
MAVEN项目构建工具
作用:管理jar包
配置一个pom.xml文件,,用到的外部jar包会自动到中央仓库去下载
现阶段使用MAVEN结构:
src/main/java—项目主体
src/main/resource—配置
src/test/java----测试
src/test/resource----测试
将webapp拷贝到src/main路径下;;修改class编译路径
<在项目主体下新建包>
三层结构搭建
web.servlet(controller 控制层)—请求进来第一个到达的层
service—处理业务逻辑的层(web层会调用service的程序处理数据)
dao—一般是service层调用dao层
domain—实体类对应实体表
(注:小知识)iframe标签
在一个div内;;引用iframe标签;;引用另外一个页面在这个div内显示
内联框架
职位管理(CRUD)
注意:前端增、改;所提交的数据类型不同;;
使用视图:
视图,新的一个虚拟表
可以通过查询这个虚拟表,简易得到其中的数据
全注解开发
@Controller控制器
@Service业务对象
@Repository持久层对象
@Component组件
打上注解后,controller控制层就知道是哪些部分的代码,(可以交给控制层管理对象)
注:请求路径的四种情况(举例):
a. 浏览器地址栏URL:localhost:8080/xx/jobs/queryAll
b. < a href = “/xx/jobs/query”>
c. Servlet内部转发:req.getDispath(“/jobs/query”)
d. Servlet重定向:resq.redirect(“/xx/jobs/query”)
引入wangeidt[富文本编辑器]
引入一个div————id
下面代码创建富文本编辑器,与id对应
还可以,对这个编辑框,绑定一个函数事件
查询官网;;学习放值
ajax异步请求
ajax异步局部刷新技术
异步请求,用于局部刷新页面
ajax代码就是js代码;(js也可以向后台发送请求)
如何使用:
建立一个js文件,,,放入获取ajax对象的函数;;
函数:
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){//针对其他浏览器
xhr = new XMLHttpRequest();
}else{//针对低版本的ie浏览器
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
return xhr;
}
外部调用函数,就得到一个ajax对象
使用:
调用下面的函数:(示例)
JSON数据格式
传统的响应,会把整个页面都响应(页面格式+数据)
JSON格式,只响应数据
表达对象:(其中属性的调用)
//简单对象
var person={"id":1,"name":"唐","age":21}
console.debug(person);
console.dubug(person.name);
//复杂对象
person={"id":1,"name":"唐","age":21,"myworld":{"sex":"man","money":1111111111111}};
console.debug(person);
console.debug(person.myworld.money)
//表示数组
peroson=[{"id":1,"name":"唐","age":21},{"id":1,"name":"铃","age":21}];
console.debug(person[0].name)
console.debug(person[1].name)
注:后台返回的json格式数据。。。也只是字符串
让前台的js,将json格式的数据,,,转化为JSON对象
//接收到的是json格式的字符串;;转换为json对象
var ceshi={"id":1,"name":"唐","age":21};
//得到一个string类型的json格式的字符串数据
/* eval() : 对于JSON字符串转换:对格式要求不是很严谨
JSON.parse() */
转化json对象:方式一:
var ceshi2= eval("("+ceshi+")");
console.debug(ceshi2);
转化json对象;方式二:
/* 只能对标准的JSON格式的字符串进行一个转换成JSON对象
所有的属性应该用双引号引起来
*/
var str = '{"id":1,"name":"洞洞","age":18}';
pson = JSON.parse(str);
console.debug(pson);
细节小知识:
MySQL视图:
链表查询:
实例:
SELECT * FROM t_jobs j INNER JOIN t_address a ON j.address=a.id
SELECT j.id,j.title,a.cityname as address,j.jobnum,j.treatment,j.describes,j.requires,j.htmlurl,j.positiontype,j.isenabled,j.inputdate FROM t_jobs j INNER JOIN t_address a ON j.address=a.id
将t_jobs表j中的address字段 与t_address表a中的cityname字段链接
然后新建视图——取名
视图:一个虚拟表
将SQL语句复制到编辑视图中,生成“视图”一张虚拟表
表中,两张表中链接的字段就会替换出来
form中的隐藏值
实例:
< input type=“hidden” value="${jobs.id }" name=“id”>
hidden属性,隐藏
分页查询
真分页
(注:真分页(后端分页)比如说现有数据库有300条数据。如果我每页30条,那么每次到数据库里去读取当前的30条数据)
拿到某一页的所有数据
SELECT * FROM product LIMIT 查询的起始编号,每次查询多少条
开发中(分页时:)
开发时如果需要分页,我们一般会创建相应的分页对象PageList,它里有几个分页属性:
1 totalCount :一共多少条数据 从数据库中直接查询
select count(*) from product
2 pageSize:每页多少条数据:由我们自己决定
3 currentPage:当前每几页:由客户决定(客户在前台选择)
当客户点击上一页,下一页,首页,尾页就代表它在做选择
也就是不管他点的是哪一个:
其它的所有数据都可以通过上面的三个条件计算出来:
假分页
代码处理;一次性全部将数据查询出来,在本地弄一个缓存,从缓存里拿数据,一次取部分展示
高级查询
模糊查询语句:
select * from t_jobs where title like '%java%'
select * from t_jobs where a=1
select * from t_jobs where title like '%java%' and a=1 and.......
页面静态化
将动态页面转换为静态化
静态化后每次访问页面不用通过数据库查数据,减少服务器、数据库压力
流程配置:
第一次访问时;走数据库流程拿到数据
拿到数据库中数据后,在添加到页面中显示时::将其转换为html::
建立一个html模板
查到的数据放入模板中
生成html
再次访问时,,就直接去读html
转化过程中用到的技术:
框架freeMark:volecity
SpringMVC的拦截器:
登录
注册