内容管理系统

第一个项目

1.CMS:内容(文章)管理系统
2.Maven:结构(以后大家使用maven:它可以帮我们自动导包,自动编译,规范代码,…)
src/main/java -> Java代码的存放位置
src/main/resources -> 资源文件的存放位置
src/test/java -> 测试代码的位置
src/test/resources -> 代码资源文件的位置
3.项目搭建的常规操作
建表(t_image),建domain(Images),dao,service,controller
web.xml,applicationContext.xml,applicationContext-mvc.xml
4.搞定页面(凡是WEB-INF中的页面都要通过Controller访问)
SystemController -> 进入后台的主页面
ImagesController -> 进入轮播图(CRUD)管理页面
5.以后怎么和前端合作
5.1 前端会把html做好,然后我们把他做的页面搞到我们的项目中来(图片,js,css的引入路径都要进行修改)
5.2 iframe -> 可以把其它的页面直接放入到页面中来

5.3 注意点:如果咱们配置有上下文路径:所有跳转的路径前:${pageContext.request.contextPath }
6.完成图片上传
6.1 form中需要配置 method=“post” enctype=“multipart/form-data”
6.2 后台要根据上传的文件名进行接收
①.修改名称 ②.获取路径 ③.保存图片(fileImg.transferTo(file))
④.保存Images对象(绝对路径的地址,名称)

工作(job)的CRUD

一. 以后开发要注意,一个domain的属性(一张表中的列)在开发的时候一定要先把它搞清楚
	1.这个属性的意思(含义)
	2.研究这个属性的类型
	3.这个属性的值从哪里来???
	private Integer id;
	//职位标题(Java高级工程师,会计,育儿嫂)
	private String title;
	//工作地址(北京,上海,工龙村)
	private String address;
	//工作地址对应的id
	private Integer address_id;
	//招聘人数
	private Integer jobnum;
	//待遇(工资)
	private Integer treatment;
	//职位描述(相关专业,长得帅)
	private String describes;
	//职位要求(会CSS,JS,Java,Spring等技术)
	private String requires;
	//静态网站的地址(静态化的效果,明天再讲)
	private String htmlurl;
	//职位类型(1->全职,0->兼职)
	private Integer positiontype;
	//是否启用
	private Boolean isenabled;

二.完成后端的CRUD【和前面做的是一样的】
三.回显功能

a d d r e s s L i s t " v a r = " a d d r e s s " > < o p t i o n v a l u e = " {addressList}" var="address"> <option value=" addressList"var="address"><optionvalue="{address.id}"
a d d r e s s . i d = = j o b . a d d r e s s i d " > s e l e c t e d < / c : i f > > {address.id==job.address_id}"> selected </c:if> > address.id==job.addressid">selected</c:if>>{address.name}


四.创建视图
相当于是一个假表
create view 视图名称 as select…
可以直接查询视图
select * from 视图名称
五.模板技术
动态网页(数据可变)与静态网页(访问快,SEO排名高)
动态网页静态代(伪静态[只改后缀],真静态)
用到模板技术:数据+模板=输入文本
freemarker【ftl】,velocity【vm】

F12->看js有没有错,再看网络传参有没有问题
	 如果前端没有问题,问题就在后端(有没有接收参数,如果接收到了,有没有调用方法,SQL有没有写对,数据有没有返回)
	 没有找到 -> 比较法,打印法,删除法

freemarker

freemarker:是比较流行的一个模板技术【ftl】
使用freemarker的步骤(以后只需要百度查找即可)
1.导包(freemarker是一个小框架)
2.创建一个配置对象Configuration(加个版本)
3.设置加载路径
4.设置字符集(默认)
5.创建模板(准备一个ftl模板)
6.准备数据(Map,对象)
7.数据+模板=输出文件(Writer)
案例一:代码生成器(半成品) -> 下一个项目会有一个插件
案例二:动态网页静态化(添加,修改)
修改的时候需要把原生的那个静态化页面删除
删除数据的时候也要把静态化页面删除
需要把路径记录下来,才可能去找到这个静态化页面

高级查询+分页

一.高级查询
1.1 拼接where条件的字符串(第一个条件前面加where,其它的条件前面加and)
a. 先加一个 where 1=1 -> 影响查询性能
b. 准备一个标签 flag=true -> true就是where,false就加and
默认是true,每一次就加where,加完后把它改回成false(第n次就改加使用and)
代码量比较大
c. 准备一个List,装的就是每一个条件(前面没有where与and)
遍历这个集合的时候,第一次加where,其它的情况加and
在理解上,使用就还是有点麻烦
d. 把第一个and替换成where -> 比较简单,不影响性能
whereSql.replaceFirst(“and”, “where”);
1.2 dao中需要加上where条件
查询总条数与查询当前页的数据 -> where条件是一样的

二.高级查询+分页
	之前的分页是直接一个超连接,发送请求就可以成功了。但是当我们有了高级查询条件后,这个分页会导致高级查询的条件丢失!
	解决方案:点击分页的时候提交表单(表单中就有咱们的分页以及查询数据)
	2.1 在form中加上了一个隐藏域 (当前页)
		注意:这里必需给一个初始页数
		
	2.2 修改咱们的a标签(访问我们的一个js方法)
		上一页/下一页/..
	2.3 完成goPage方法
		function goPage(page){
			//1.把当前页传到隐藏域中
			document.getElementById("currentPage").value= page;
			//2.提交表单
			document.getElementById("表单id").submit();
		}
	
三.登录功能(Spring的拦截器)
	select * from t_user where username=? and password=?
	3.1 登录的功能:
		1.获取前台传过来的用户名与密码
		2.根据用户名与密码到数据库中查询当前登录用户
		3.如果查询到了用户 -> 把用户存在sessoin中,跳转到主页面
		     如果没有查询到用户 -> 跳转到登录页面
	3.2 登录的拦截
		1.准备一个Spring的拦截器
			class LoginInterceptor 实现 HandlerInterceptor
				preHandle:在执行方法之前进行的拦截
					返回false代表不放行
					返回true代表放行
		2.对拦截器进行相应的配置(applicationContext-mvc.xml)
			
				
					
					
					
					
					
					
					
				
			
		3.在拦截器中实现功能
			到session中拿当前登录用户
			如果没有拿到 -> 跳回登录页面
			如果拿到,直接放行

你可能感兴趣的:(内容管理系统)