CMS(基础后台管理系统)

说明:
一套系统可以大致分为:
前台—前端页面
后台—后台程序(web)
{对于初学者来说,在这个简单项目中,我们大致分为5天完成}

Day1

MAVEN项目构建工具
作用:管理jar包
配置一个pom.xml文件,,用到的外部jar包会自动到中央仓库去下载
现阶段使用MAVEN结构:

  1. src/main/java—项目主体
  2. src/main/resource—配置
  3. src/test/java----测试
  4. 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控制层就知道是哪些部分的代码,(可以交给控制层管理对象)

Day2

注:请求路径的四种情况(举例):
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对象

使用:

调用下面的函数:(示例)

java项目代码结构 java项目详解_java项目代码结构

两种函数:

java项目代码结构 java项目详解_java基础项目_02

java项目代码结构 java项目详解_java项目代码结构_03

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属性,隐藏

Day3

分页查询

真分页

(注:真分页(后端分页)比如说现有数据库有300条数据。如果我每页30条,那么每次到数据库里去读取当前的30条数据)

拿到某一页的所有数据

SELECT * FROM product LIMIT 查询的起始编号,每次查询多少条

开发中(分页时:)

开发时如果需要分页,我们一般会创建相应的分页对象PageList,它里有几个分页属性:

java项目代码结构 java项目详解_数据_04

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.......

java项目代码结构 java项目详解_java项目代码结构_05


(就是将判断的条件拿去拼接字符串)

Day4

页面静态化
将动态页面转换为静态化
静态化后每次访问页面不用通过数据库查数据,减少服务器、数据库压力
流程配置:
第一次访问时;走数据库流程拿到数据
拿到数据库中数据后,在添加到页面中显示时::将其转换为html::
建立一个html模板
查到的数据放入模板中
生成html
再次访问时,,就直接去读html
转化过程中用到的技术:
框架freeMark:volecity

Day5

SpringMVC的拦截器:
登录
注册