1.BeanUtils工具类
- 使用:
需要引入commons-beanutils-1.8.3.jar - 作用:
将前端的数据表单进行封装到指定类型的bean中
Map<String, String[]> ma = req.getParameterMap();
User user = new User();;
BeanUtils.populate(user,ma);
2.重定向和转发
- 使用:
借助于关于response - 作用:
在后台满足某一条件后,进行重定向或者转发到其它页面
1.重定向
- response.sendRedirect("testRetrunString").
相当于return "redirect:testReturnModelAndView";
2.转发
- request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
相当于return "forward:/WEB-INF/pages/success.jsp";
3.设置编码及响应结果
- 使用:
关于编码 - 作用:
使得前端后台数据一致
响应:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf -8");
response.getWriter().write("json 串");
接收:
req.setCharacterEncoding("utf-8");
4.前端数据获取
- 使用:
maven配置
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2.maven:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
- 作用:
将数据存在request域中,前端获取仅在jsp页面中
1. 后台:request.setAttribute("users",users);
前端:${users}
2. 后台:
ModelAndView mv = new ModelAndView();
mv.addObject("username", "张三");
前端:${username}
5.域对象
- 在jsp页面中不需要创建,直接使用的对象
变量名 | 真实类型 | 作用 |
---|---|---|
pageContext | PageContext | 当前页面共享数据,还可以获取其他八个内置对象 |
request | HttpSerletRequest | 一次访问的多个资源(转发) |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
response | HttpServletResponse | 响应对象 |
page | Object | 当前页面(Servlet)的对象 this |
out | Jspwriter | 输出对象,数据输出到页面上 |
config | ServletConfig | Servlet的配置对象 |
exception | Throwable | 异常对象 |
6.刷新页面
-
使用:
js刷新页面 -
作用:
指令触法当前页面刷新及自动刷新
- location.reload(x) :x可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新")
- location.replace(URL) :方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。注意:不要用 history.go(-1),或 history.back();来返回并刷新页面,这两种方法不会刷新页面。
- <meta http-equiv="refresh" content="20"> :其中20指每隔20秒刷新一次页面.(使用:页面自动刷新:把代码加入<head>区域中)
- <meta http-equiv="refresh" content="20;url=http://www.jb51.net"> :其中20指隔20秒后跳转到http://www.jb51.net页面(使用:页面自动跳转:把代码加入<head>区域中)
- <body οnlοad="opener.location.reload()"> 开窗时刷新
使用:<script language="javascript">
window.opener.document.location.reload()
</script>
- <body onUnload="opener.location.reload()"> 关闭时刷新
使用:<script language="javascript">
window.opener.document.location.reload()
</script>
- Javascript刷新页面的几种方法:
1 history.go(0)
2 location.reload()
3 location=location
4 location.assign(location)
5 document.execCommand('Refresh')
6 window.navigate(location)
7 location.replace(location)
8 document.URL=location.href
7.常用的小方法
- 1.比较验证码时,不考虑大小写
Object.equalsIgnoreCase(Object)
8.在前端复选框多条被选中提交
//选中删除
//加载完成页面后
window.onload=function () {
//获取id对象
var delSelected = document.getElementById(delSelected);
//给对象绑定单击事件
delSelected.onclick=function () {
//获取from表单id对象
var deleteChoose = document.getElementById("deleteChoose");
//提交表单
deleteChoose.submit();
}
//全选
//获取表头对象
var all= document.getElementById("allChoose").onclick=function (){
//获取单个对象
var ids = document.getElementsByName("id");
for (var i = 0; i <ids.length ; i++) {
//将表头的状态与单个对象的状态一致
//all也可以用this表示
ids[i].checked= all.checked
}
}
}
9.为什么要加上时间戳
浏览器中存在缓存
缓存是先看请求地址是不是一样,地址一样就取出缓存内容
加new Date().getTime(),每次请求地址就不一样。保证了不从缓存里面取
new Date().getTime() 表示当前时间毫秒值
10.idea关于重构的快捷键
重命名文件、方法、属性等(rename):SHIFT+F6
提取当前选择为变量(extract variable):CTRL+ALT+V
提取当前选择为属性(extract field):CTRL+ALT+F
提取当前选择为常量(extract constant):CTRL+ALT+C
提取当前选择为方法(extract method):CTRL+ALT+M
提取当前选择为方法参数(extract parameter):CTRL+ALT+P
重构类、方法(change signarture):CTRL+F6
提取代码块至if、try等结构中(surround with):CTRL+ALT+T
创建模块文件等(new):CTRL+ALT+N
创建测试用例(test):CTRL+SHIFT+T
重构菜单(refactor for this):CTRL+T
11.json转换
- 前端
1.jQuery插件支持的转换方式:jsonstr :表示json字符串 $.parseJSON( jsonstr ); //将json字符串转换为js对象
2.JSON.stringify(obj)将JSON转为字符串
3.JSON.parse(string)将字符串转为JSON格式
4.eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 (不推荐使用)
- 后台
1. 把java 对象列表转换为json对象数组,并转为字符串
JSONArray array = JSONArray.fromObject(list);
String jsonstr = array.toString();
2. 把java对象转换成json对象,并转化为字符串
JSONObject object = JSONObject.fromObject(user);
String jsonstr = object .toString();
3.把JSON字符串转换为JAVA 对象数组
JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
List<User> users= (List<User>)JSONArray.toCollection(json, User.class);
4.把JSON字符串转换为JAVA 对象
JSONObject jsonobject = JSONObject.fromObject(jsonStr);
User user= (User)JSONObject.toBean(object,User.class);
12.window.open
window.open 是 javaScript 打开新窗口的方法
window.open 基本语法: window.open(pageURL,name,parameters);
具体示例window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no')
相关参数说明
window.open 弹出新窗口的命令;
'page.html' 弹出窗口的文件名;
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
height=100 窗口高度;
width=400 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;