POST请求
@RequestBody --> JSON字符串部分
@RequestParam --> 请求参数
-----form-data多用于上传文件-----
①(@RequestBody Map map)
②(@RequestBody Object object)
application/json可用
form-data、x-www-form-urlencoded不可用
③(String waterEleId, String enterpriseName)
①(@RequestParam Map map)
②(@RequestParam String waterEleId)
application/json不可用,url中的?后面添加参数可用
form-data、x-www-form-urlencoded可用,但是要将Headers里的Content-Type删掉
①(Map map)
②(Object object)
③(@RequestParam Object object)
都不可用
①(HttpServletRequest request, @RequestBody Map map)
②(HttpServletRequest request, @RequestBody Object object)
application/json可用
form-data、x-www-form-urlencoded不可用
①(HttpServletRequest request)
②(HttpServletRequest request, String waterEleId)
③(HttpServletRequest request, @RequestParam Map map)
④(HttpServletRequest request, @RequestParam String waterEleId)
application/json不可用,url中的?后面添加参数可用
form-data、x-www-form-urlencoded时可用
④(HttpServletRequest request, Map map)
①(HttpServletRequest request, Object object)
①(HttpServletRequest request, @RequestParam Object object)
都不可用
GET请求
RequestBody -- Map / Object
都不可用
①(@RequestParam Map map)
在url中的?后面添加参数即可使用
①(@RequestParam String waterEleId,
@RequestParam String enterpriseName)
在url中的?后面添加参数即可使用
①(@RequestParam Object object)
都不可用
excel表格某列/某几列数据重复 validateRowData方法
方法一:每读取一行数据就放入集合,该行数据和集合作比对(行数多的时候会卡死)
方法二:将所有数据存放到集合中,对集合进行双重for循环(效率高)
不能在for循环里面再添加数据
for (RowData data : rowDatas) { //data上一条数据
if (splicingValue.equals(data.getSplicingValue())) {
errorString.append("第" + rowData.getRow() + "行第" + rowData.getUsccColumn() + "列、第" +
rowData.getMonthColumn() +"列不能和第"+data.getRow()+ "行第" + data.getUsccColumn() +
"列、第" + data.getMonthColumn() +"列完全相同"+ "
");
}else {
rowDatas.add(rowData); //在for循环里面添加数据是错误的
}
}
1、Servlet是一切处理的中心,3.0之后与Security
request.login(userId, password);实际是调用的Security里封装了的内容
2、数据库查询
一对多,Left JOIN左连接,数据会增多
多对一,Left JOIN左连接,数据不会增多
3、session是一个会话,对于同一个域名下的有用,同一个浏览器吗
session和cookie的区别
11、<select id="selectTodoFieldsByBusiType" parameterType="java.lang.String" resultMap="WorkflowTodoFields">
SELECT CONCAT(T.TABLE_NAME, " V") AS 'TABLE_NAME', GROUP_CONCAT(CONCAT("V.", T.FIELD_NAME)) AS 'FIELD_NAME'
FROM t_workflow_todo_fields T
WHERE T.BUSI_TYPE = #{busiType, jdbcType=VARCHAR}
GROUP BY T.TABLE_NAME
</select>
3、大写转换成驼峰
WorkflowControl类中P70行
List<Map> list = workflowMpper.getToDoList(formData);
List<Map> newList = new ArrayList<>();
for (Map map : list) {
Map newMap = new HashMap();
Iterator<Map.Entry> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = iterator.next();
String key = (String) entry.getKey();
Object value = entry.getValue();
String[] strs = key.split("_");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < strs.length; i++) {
if (0 == i) {
sb.append(strs[i].toLowerCase());
} else {
sb.append(strs[i].substring(0, 1));
sb.append(strs[i].substring(1).toLowerCase());
}
}
String newKey = sb.toString();
newMap.put(newKey, value);
}
newList.add(newMap);
}
4、接口返回图片
设置图片下载:response.setContentType("application/octet-stream");
设置图片显示:response.setContentType("image/jpeg");
设置图片文件名:response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(oFileName,"UTF-8"));
设置图片缓存:response.setHeader("Cache-Control","max-age=604800");
/templates/**
file:\E:\IdeaProjects\gaygserver\src\main\resources\static\
classpath:/static/ (文件被打入jar包情况下)
http://127.0.0.1:10003/templates/ggg.jpeg
有自定义虚拟路径时,默认虚拟路径也可以用 (文件被打入jar包情况下)
http://127.0.0.1:10003/ggg.jpeg
/** 覆盖默认
file:\E:\IdeaProjects\gaygserver\src\main\resources\static\
classpath:/static/ (文件被打入jar包情况下)
http://127.0.0.1:10003/ggg.jpeg
两反斜杠\等同于一个斜杠/
注意:末尾的两个反斜杠必须要有
eclipse 不能引用 javax.imageio.ImageIO;
我曾经遇到过该问题,困扰了好久,解决方案是:Project---Properties,选择Java Build Path,选中右侧的Libraries,选择Add Library如下图,选中JRE System Library 选择next,进入下一界面选择Execution environment,点击Enviroments按钮选择你采用的JDK如JavaSE-1.6等,不要选下面的OSGi,最后单击完成即可。
java正则表达式_正整数或小数且小数位数不超过n位
String regExp = "^[1-9][0-9]*(\.[0-9]{1,"+10+"})?$"; //n为小数位数,n=10
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(str);
return m.matches();
boolean result = str.matches("[0-9]+"); //正则表达式:该字符串是纯数字
boolean result1 = str.matches("^[0-9]+(.[0-9]{2})?$"); //正则表达式:两位小数点
传入list集合批量查询
studio中输入时:光标在引号内的,想跳出引号可以再按一次shift+引号,还有试试:ctrl+shift+enter
application.yml
logImpl: org.apache.ibatis.logging.stdout.StdOutImpl #打印控制台的信息
logback.xml
打印...
1/windows下部署是直接用java-jar运行好还是tomcat部署好:
打war包 是为了修改一些文件方便, 但是我们不需要, 我们是前后端分离。
大部分情况下只需要修改yml,jar包的话,改了你就得重新打包运行
Tomcat应该就和我们本地的IDEA一样,修改了Java直接重新运行就好
springboot运行项目和java-jar运行时一样的原理,利用JVM
redis:
redis-server.exe redis.windows.conf是启动单次服务,启动的是redis.windows.conf配置文件
services.msc是设置成网络服务,一直启动
redis-cli.exe相当于redis-cli.exe -h 127.0.0.1 -p 6379
t_menu:
test 测试 101006 0 102 1 calendar /v1/getInvestdetailList 101001 admin 2018-03-21 11:29:09
t_role_menu:
test 278689884 test 101006 admin 2018-03-21 11:32:02 101001
在187上配置了nginx,详见桌面nginx.cnf和nginx配置1.cnf。配置后的访问路径为:远程服务器地址10.10.200.187
如果不通过187配置nginx,那么访问路径为:10.10.200.18。例如家里的访问路径是172.16.11.66:10002
nginx通过187访问18服务器,18后台执行代码,跳转的噢,通过配置文件配置的路径地址下载模板,
其实下载的还是18上面的,而不是200.6文件服务器上的。而家里的模板路径
加了权限之后,所有的请求或者url路径就要在同一个域名下访问
比如企业云:在localhost:8000下下载模板功能,如果点击之后跳转到http://172.16.11.66:10002/templates/%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF%E7%AE%A1%E7%90%86.xls
http://localhost:8000/#/EnterpriseCloud/BasicDataManage
http://localhost:8000/templates/企业信息管理.xls
eclipse打war包和jar包
war包和jar包区别:
war包放入tomcat的webapps文件夹下,启动bin下startup.bat即可启动tomcat,相当于eclipse启动web项目Run As Servers
本地浏览器访问:http://localhost:8180/parkmall/loginAction.do?login或者http://127.0.0.1:8180/parkmall/loginAction.do?login
如果在远程服务器上也启动了服务,那么访问路径就是:http://172.16.11.68:8180/parkmall/loginAction.do?login(以172.16.11.68为例)
使用Springsecurity框架对加密后的密码进行验证
if (passwordEncoder.matches(oldPwd, userInfoByUserName.getPassword())) {
userInfoByUserName.setPassword(passwordEncoder.encode(newPwd));
} else {
throw new BusinessException("修改密码失败,原密码不正确");
}
加密部分方法
@Test
public void pwd() {
StandardPasswordEncoder standardPasswordEncoder = new StandardPasswordEncoder();
String encode = standardPasswordEncoder.encode("96e79218965eb72c92a549dd5a330112");
System.out.println(encode);
}
1、下载模板
不需要通过继承WebMvcConfigurerAdapter自定义类,比如贵安云谷TemplatesConfiguration类,或者通过接口方式下载模板。
有一种更简单的方法:通过服务管理器配置一个IIS服务,指向目标路径。然后再通过nginx代理的路径访问
在66后台服务器上启动后台服务,在39文件服务器上配置IIS服务,模板也在39服务器上。nginx代理在66服务器上。
SELECT
formId AS P_ID,
formTitle AS P_NAME,
longtitude AS LONGITUDE,
latitude AS LATITUDE,
t_user.userName AS 查勘人,
t_user.department AS 部门,
FROM_UNIXTIME(updateTime / 1000, '%Y-%m-%d') AS 查勘时间,
city AS 所在城市,
province AS 所在省份,
t_form.formRemark AS 备注
FROM
t_form
LEFT JOIN t_user ON t_user.userId = t_form.userId
FROM_UNIXTIME(updateTime / 1000, '%Y-%m-%d') AS 查勘时间:将1523632363828时间转为2018/4/13这种时间格式
mybatis-plus框架表id为bigint类型
Could not set property 'id' of 'class com.jsptpd.sitemanage.modules.business.model.SitePhoto' with value '996297847782580226' Cause: java.lang.IllegalArgumentException: argument type mismatch
eclipse 更新war包到正式环境服务器上
拷贝本地的tomcat下的webapps文件夹下的parkmall项目,同时需要修改数据库连接(换成正式环境数据库地址)
这样做的话,webapps文件夹下就可以不需要parkmall.war包了,因为运行war之后启动服务依然是解压为parkmall文件夹。
另外,使用eclipse打包的war包启动服务一直有问题,可能是数据库连接未改??
使用mybatis-plus框架时,对应的数据库表的主键必须为ID且是bigint类型,不能为PROJECT_ID等
对应的model中为private Long id
选中多个用户时,前端使用application/json上传方式,其实不是传的
"orderIdList": [
"testfb1",
"huangjihai"
]这种格式,这样在model实体类中也不能被List<String> orderIdList接收到。
而是使用"orderIdList": "2,3,4,5,6" 这种String格式,实体类中使用String orderIdListe接收,
然后String.split方法
1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存),session 可以放在 文件、数据库、或内存中都可以
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,用户验证这种场合一般会用 session
查看当前网站的cookie的两种快捷方法
①在浏览器的地址栏输入:javascript:alert(document.cookie) (不区分大小写),就会弹出你在当前网页登录的cookie信息。
②按F12进入浏览器的开发者模式——console——在命令行输入javascript:alert(document.cookie),再回车
Redis的两个典型应用场景:
①数据缓存:第一个应用场景是数据缓存,最典型的当属缓存数据库查询结果。对于高频读低频写的数据,使用缓存可以第一,加速读取过程,第二,降低数据库压力。
②共享Session:贵安云谷项目就用到了
阿里巴巴druid数据库连接池
贵安云谷以及portal项目:om.jsptpd.portal.common.config.druid包下DruidConfig+DruidStatFilter+DruidStatViewServlet
使用http://localhost:10002/druid/login.html 这个地址访问。10002指的是application-dev.yml/application-prod.yml里的port
Servlet中的doGet和doPost是不是对应于springboot中的GET和POST
springboot中是不是封装了servlet框架
servlet框架有哪些
show databases;
use database_name;
show tables;
mysql -u root –p
网友评论