工做(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;javascript
二.完成后端的CRUD【和前面作的是同样的】
三.回显功能
<select id="address" name="address_id" class="form-control">
<c:forEach items="${addressList}" var="address">
<option value="${address.id}"
<c:if test="${address.id==job.address_id}">
selected
</c:if>
>${address.name}</option>
</c:forEach>
</select>
四.建立视图
至关因而一个假表
create view 视图名称 as select....
能够直接查询视图
select * from 视图名称
五.模板技术
动态网页(数据可变)与静态网页(访问快,SEO排名高)
动态网页静态代(伪静态[只改后缀],真静态)
用到模板技术:数据+模板=输入文本
freemarker【ftl】,velocity【vm】html
F12->看js有没有错,再看网络传参有没有问题
若是前端没有问题,问题就在后端(有没有接收参数,若是接收到了,有没有调用方法,SQL有没有写对,数据有没有返回)
没有找到 -> 比较法,打印法,删除法前端
freemarker:是比较流行的一个模板技术【ftl】
使用freemarker的步骤(之后只须要百度查找便可)
1.导包(freemarker是一个小框架)
2.建立一个配置对象Configuration(加个版本)
3.设置加载路径
4.设置字符集(默认)
5.建立模板(准备一个ftl模板)
6.准备数据(Map,对象)
7.数据+模板=输出文件(Writer)
案例一:代码生成器(半成品) -> 下一个项目会有一个插件
案例二:动态网页静态化(添加,修改)
修改的时候须要把原生的那个静态化页面删除
删除数据的时候也要把静态化页面删除
须要把路径记录下来,才可能去找到这个静态化页面java
一.高级查询
1.1 拼接where条件的字符串(第一个条件前面加where,其它的条件前面加and)
a. 先加一个 where 1=1 -> 影响查询性能
b. 准备一个标签 flag=true -> true就是where,false就加and
默认是true,每一次就加where,加完后把它改回成false(第n次就改加使用and)
代码量比较大
c. 准备一个List<String>,装的就是每个条件(前面没有where与and)
遍历这个集合的时候,第一次加where,其它的状况加and
在理解上,使用就仍是有点麻烦
d. 把第一个and替换成where -> 比较简单,不影响性能
whereSql.replaceFirst("and", "where");
1.2 dao中须要加上where条件
查询总条数与查询当前页的数据 -> where条件是同样的
二.高级查询+分页
以前的分页是直接一个超链接,发送请求就能够成功了。可是当咱们有了高级查询条件后,这个分页会致使高级查询的条件丢失!
解决方案:点击分页的时候提交表单(表单中就有我们的分页以及查询数据)
2.1 在form中加上了一个隐藏域 (当前页)
注意:这里必需给一个初始页数
<input type="hidden" name="currentPage" id="currentPage" value="1" />
2.2 修改我们的a标签(访问咱们的一个js方法)
<a href="javascript:goPage(传的页数);">上一页/下一页/..</a>
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)
<mvc:interceptors>
<mvc:interceptor>
<!--你要拦截的是哪些请求 -->
<mvc:mapping path="/**"/>
<!--配置你不拦截的请求 -->
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/assets/**"/>
<!-- 全部请求都会通过这个拦截器 -->
<bean class="cn.itsource.cms.web.interceptor.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
3.在拦截器中实现功能
到session中拿当前登陆用户
若是没有拿到 -> 跳回登陆页面
若是拿到,直接放行web