51、json

好多种

JsonArray fromObject = JSONArray.fromObject(list);

String string = fromObject.toString();

Gson gson = new Gson();

String json = gson.toJson(list); 


52、调用API

//参数url化

String city = java.net.URLEncoder.encode("北京", "utf-8");

//拼地址

String apiUrl = String.format("https://www.sojson.com/open/api/weather/json.shtml?city=%s",city);

//开始请求

URL url= new URL(apiUrl);

URLConnection open = url.openConnection();

InputStream input = open.getInputStream();

//这里转换为String,带上包名,怕你们引错包

String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");

//输出

System.out.println(result);


53、https

Java  信任所有  SSL  证书,  HTTPS  请求抛错,忽略证书请求完美解决

方案一:

按照要求,把证书上传到服务器上,具体方法自行百度解决,这里不做叙述。

方案二:

添加下面的代码和工具类,工具类在下面附件中有,直接下载即可。

//省略代码。。。

realUrl = new URL(url);

if("https".equalsIgnoreCase(realUrl.getProtocol())){

   SslUtils.ignoreSsl();

}

//省略代码。。。

SslUtils 工具类 代码 实现:

package com.stevezong.utils;


import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

 

import javax.net.ssl.HostnameVerifier;

import javax.net.ssl.HttpsURLConnection;

import javax.net.ssl.SSLContext;

import javax.net.ssl.SSLSession;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

 

public class SslUtils {

 

private static void trustAllHttpsCertificates() throws Exception {

TrustManager[] trustAllCerts = new TrustManager[1];

TrustManager tm = new miTM();

trustAllCerts[0] = tm;

SSLContext sc = SSLContext.getInstance("SSL");

sc.init(null, trustAllCerts, null);

HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

}

 

static class miTM implements TrustManager,X509TrustManager {

public X509Certificate[] getAcceptedIssuers() {

return null;

}

 

public boolean isServerTrusted(X509Certificate[] certs) {

return true;

}

 

public boolean isClientTrusted(X509Certificate[] certs) {

return true;

}

 

public void checkServerTrusted(X509Certificate[] certs, String authType)

throws CertificateException {

return;

}

 

public void checkClientTrusted(X509Certificate[] certs, String authType)

throws CertificateException {

return;

}

}

 

/**

* 忽略HTTPS请求的SSL证书,必须在openConnection之前调用

* @throws Exception

*/

public static void ignoreSsl() throws Exception{

HostnameVerifier hv = new HostnameVerifier() {

public boolean verify(String urlHostName, SSLSession session) {

return true;

}

};

trustAllHttpsCertificates();

HttpsURLConnection.setDefaultHostnameVerifier(hv);

}

}



54、 Servlet 监听器

事件源:被监听的对象  ----- 三个域对象 request  session  servletContext

监听器:监听事件源对象  事件源对象的状态的变化都会触发监听器 ---- 6+2

注册监听器:将监听器与事件源进行绑定

响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码 ---- 程序员编写代码


监听器的编写步骤(重点):

a、编写一个监听器类去实现监听器接口

b、覆盖监听器的方法

c、需要在web.xml中进行配置---注册


ServletContextListener监听器的主要作用

a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动  连接池的初始化

b、加载一些初始化的配置文件 --- spring的配置文件

c、任务调度----定时器----Timer/TimerTask

55、发邮件

package com.stevezong.utils;


import java.util.Properties;


import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;


public class MailUtils {


public static void sendMail(String email, String emailMsg)

throws AddressException, MessagingException {

// 1.创建一个程序与邮件服务器会话对象 Session


Properties props = new Properties();

props.setProperty("mail.transport.protocol", "SMTP");

props.setProperty("mail.host", "smtp.126.com");

props.setProperty("mail.smtp.auth", "true");// 指定验证为true


// 创建验证器

Authenticator auth = new Authenticator() {

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication("haohao_itcast", "hao12345");

}

};


Session session = Session.getInstance(props, auth);


// 2.创建一个Message,它相当于是邮件内容

Message message = new MimeMessage(session);


message.setFrom(new InternetAddress("[email protected]")); // 设置发送者


message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者


message.setSubject("用户激活");

// message.setText("这是一封激活邮件,请点击");


message.setContent(emailMsg, "text/html;charset=utf-8");


// 3.创建 Transport用于将邮件发送


Transport.send(message);

}

}


56、定时器

//开启一个定时器

Timer timer = new Timer();

//task :任务   firstTime 第一次运行的事件   period 下次运行的事件 秒

//timer.scheduleAtFixedRate(task, firstTime, period);

timer.scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

System.out.println("开始任务");

}

},new Date(),5000);

57、pagecontext.request.getcontextpath

58、jsp页面 首行报错

在pom.xml文件中加入servlet依赖

javax.servlet

servlet-api

2.5

provided

在工程中添加 tomcat 运行环境

59、mybatis 报错:Invalid bound statement (not found)

检查xml文件所在package名称是否和Mapper interface所在的包名

mapper的namespace写的不对!!!注意系修改。

UserDao的方法在UserDao.xml中没有,然后执行UserDao的方法会报此

UserDao的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultType!

如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决

看下mapper的XML配置路径是否正确


60、java.lang.IllegalArgumentException: Name for argument type [java.lang.String]  

解决方法:

修改参数的写法,比如修改为

public ModelAndView login(@RequestParam("userName") String userName, @RequestParam("password") String password){

//划水1

//划水n

}

修改编译脚本

SRC=$(find ./java/* | grep java$)  

javac -g -d ./classes  $SRC -encoding utf-8 

增加 -g 参数,即编译时生成所有debug的信息。

参考:https://blog.csdn.net/kouwoo/article/details/42869779



61、jq 选择器

$("input[name='submit']")

input 其中 name属性等于submit的

62、JQuery报错:Uncaught TypeError: Cannot read property 'trim' of undefined

var input = $("#EarningsTypes").val().trim();

var vname = $("#EarningsTypes").val() == undefined ? '' : $("#EarningsTypes").val().trim();  

详情参考https://stackoverflow.com/questions/32733423/uncaught-typeerror-cannot-read-property-trim-of-undefined-in-jquery

https://blog.csdn.net/gongjing457/article/details/79001464


63、jq插件 表单校验

导入插件的步骤:

将jquery的原始文件和插件文件jquery.validate.js导入到工程中

编写js代码对表单进行验证


表单验证的格式:

$("form表单的选择器").validate(json数据格式);  //键值对  键:值({})

json数据格式:

"{

  rules:{

表单项name值:校验规则,

表单项name值:校验规则... ...

  },

  messages:{

表单项name值:错误提示信息,

表单项name值:错误提示信息... ...

  }

}"


$("#myform").validate({

rules:{

"username":{"required":true}

},

messages:{

"username":{"required":"用户名不能为空"}

}

})

其中:校验规则,可以是一个也可以是多个,如果是多个使用json格式

常用校验规则如下:


注意:当错误提示信息不按照我们预想的位置显示时,我们可以按照如下方式进行设置

"自定义错误显示标签放在我们需要显示的位置,当此表单项验证不通过时会将此

信息自动显示出来,jquery验证插件会自动帮助我们控制它的显示与隐藏"

如果设置了错误lable标签就不必在messages中设置此表单项错误提示信息了


如果预定义的校验规则尚不能满足需求的话可以进行自定义校验规则:

自定义校验规则步骤如下:

(1) 使用$.validator.addMethod("校验规则名称",function(value,element,params)){}

(2) 在rules中通过校验规则名称使用校验规则

(3) 在messages中定义该规则对应的错误提示信息

其中: value是校验组件的value值

element是校验组件的节点对象

params是校验规则的参数

1 required:true 必须输入的字段。

2 remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。

3 email:true 必须输入正确格式的电子邮件。

4 url:true 必须输入正确格式的网址。

5 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。

6 dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。

7 number:true 必须输入合法的数字(负数,小数)。

8 digits:true 必须输入整数。

9 creditcard: 必须输入合法的信用卡号。

10 equalTo:"#field" 输入值必须和 #field 相同。

11 accept: 输入拥有合法后缀名的字符串(上传文件的后缀)。

12 maxlength:5 输入长度最多是 5 的字符串(汉字算一个字符)。

13 minlength:10 输入长度最小是 10 的字符串(汉字算一个字符)。

14 rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。

15 range:[5,10] 输入值必须介于 5 和 10 之间。

16 max:5 输入值不能大于 5。

17 min:10 输入值不能小于 10。





64、gson json String转list

List all =gson.fromJson(categoryListJson, new TypeToken>() {}.getType());


65、gson list 转String

Gson gson = new Gson();

List all = categoryDao.findAll();

String str = gson.toJson(all)



66、mybatis 

$()和 #() 的区别

$() 会强转为 int

#() 是什么 就是什么


67、gson 解析 复杂的 json str

创建一个 json str 对象的类

先我们需要定义一个序列化的Bean,这里采用内部类的形式,这样比较容易看得清晰些

首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些:

很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:

内部嵌套的类必须是static的,要不然解析会出错;

类里面的属性名必须跟Json字段里面的Key是一模一样的;

内部嵌套的用[]括起来的部分是一个List,所以定义为 public List b,而只用{}嵌套的就定义为 public C c,

然后想拿数据就很简单啦,直接在jsonBean里面取就可以了!

如果需要解析的Json嵌套了很多层,同样可以可以定义一个嵌套很多层内部类的Bean,需要细心的对照Json字段来定义哦。

Gson gson = new Gson();

EtouchBean etouch = gson.fromJson(string,EtouchBean.class);


68、Postman 



69、yum install bind-utils

dig 域名工具

70、 git ssh 配置

ssh2 home 和 private keys 在同一个目录

C:\Users\Administrator\.ssh\config

============

  Host gitlab.com

  Hostname altssh.gitlab.com

  User git

  Port 443

  PreferredAuthentications publickey

  IdentityFile ~/.ssh/id_rsa

=====================

71、 git 拉取maven 

https://blog.csdn.net/u014683538/article/details/61196791

https://www.jianshu.com/p/4c601f50aa75

72、eclipse:Project is already imported into workspace

有时候eclipse或者myeclipse导入项目的时候会发生上面这个错误,具体原因是在IDE的workspace中已经存在了相同名字的项目,所以不能导入。

解决方法:修改项目名称,修改.project.文件项目名称


  在import projects那个界面把Copy projects into workspace前面的复选框√去掉再Browse,这样就OK了


73、eclipse A .project file already exists in directory

从GitHub上导入项目时突然无法导入,报错如下:


eclipse A .project file already exists in directory

最终解决方案:


从git导入general project后,到工作空间的导入项目目录下找到.project文件并干掉它 然后在eclipse点back,接着点next,导入成功

74、报错not authorized信息

有的朋友改了域用户名和密码,发现在eclipse下无法pull和push分支,报错not authorized信息。

window>preferences>general>security>content>git>delete 即可清除原有密码,再次pull时输入新密码即可。 

75、eclipse下git不能拉取错误解决小记

用以下方式加入下边几行字:


Window->Preference->Team->Git->Configuration->Repository Settings->选择你的repository,然后点open


[branch "master"]

  remote = origin

  merge = refs/heads/master

  

76、jsp head和foot 引入

https://blog.csdn.net/nrlovestudy/article/details/50032995

77、The current branch is not configured for pull No value for key remote.origin

eclipse 不能拉取

window---preference--team---git--configuration---Repository Settings,Repository选择当前的仓库,然后点右边的open

[core]  

repositoryformatversion = 0  

filemode = false  

logallrefupdates = true  

[remote "origin"]  

url = 自己项目的git地址  

fetch = +refs/heads/*:refs/remotes/origin/*  

[branch "master"]  

remote = origin  

merge = refs/heads/master



78、Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

最近部署项目的时候,由于MIS配置的是Tomcat 8.5的服务端,导致Web应用不正常,报HTTP 400错误(Chrome无异常、IE报错)。问题原因初步判断为8.5版本的服务端接收请求不会对符号进行转义,Chrome不异常的原因或许是浏览器自身转义了。具体错误信息如下:

有两种解决方案:

Plan 1: 

更换低版本的Tomcat来规避这种问题。

Plan 2: 

在conf/catalina.properties中最后添加一行:

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

重启服务器后,解决问题。

官方指南地址:http://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html

官方说明:

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH

If this is true ‘%2F’ and ‘%5C’ will be permitted as path.delimiters.If not specified, the default value of false will be used.


79、spring4 搭建 4.2.4

spring-beans

spring-context

spring-core

spring-expression

apache.commons.logging

apache.log4j


位置任意(建议放到src下)

配置文件名任意(建议applicationContext.xml)



80、重置用户名密码

删除C:\Users(用户)\"你的用户名"\AppData\Roaming\Subversion\auth\下的所有文件


81、nginx 查看安装了哪些模块

nginx -V


82、如何解决MySQL在高版本需要指明是否进行SSL连接问题

  在mysql连接字符串url中加入ssl=true或者false即可,如下所示。

  url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8&useSSL=true


83、redis 第一个警告:The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

意思是:TCP  backlog设置值,511没有成功,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128.

临时解决方法:(即下次启动还需要修改此值)

echo 511 > /proc/sys/net/core/somaxconn

永久解决方法:(即以后启动还需要修改此值)

将其写入/etc/rc.local文件中。

baklog参数实际控制的是已经3次握手成功的还在accept queue的大小。

参考linux里的backlog详解


84、redis 第二个警告:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

意思是:overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败。建议在文件 /etc/sysctl.conf 中将overcommit_memory修改为1。

1.  echo "vm.overcommit_memory=1" > /etc/sysctl.conf  或 vi /etcsysctl.conf , 然后reboot重启机器

2.  echo 1 > /proc/sys/vm/overcommit_memory  不需要启机器就生效

永久解决方法:将其写入/etc/sysctl.conf文件中。

参考:有关linux下redis overcommit_memory的问题


85、第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain thesetting after a reboot. Redis must be restarted after THP is disabled.

意思是:你使用的是透明大页,可能导致redis延迟和内存使用问题。执行 echo never > /sys/kernel/mm/transparent_hugepage/enabled 修复该问题。

临时解决方法:

echo never > /sys/kernel/mm/transparent_hugepage/enabled。

永久解决方法:

将其写入/etc/rc.local文件中。



86、安装redis 及常见问题

#make

cd src && make all

make[1]: Entering directory `/software/redis-2.8.8/src'

CC adlist.o

In file included from adlist.c:34:

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory

zmalloc.h:55:2: error: #error "Newer version of jemalloc required"

make[1]: *** [adlist.o] Error 1

make[1]: Leaving directory `/software/redis-2.8.8/src'

make: *** [all] Error 2

make MALLOC=libc (不知道为什么这么用?)

# make test

cd src && make test

make[1]: Entering directory `/software/redis-2.8.8/src'

You need tcl 8.5 or newer in order to run the Redis test

make[1]: *** [test] Error 1

make[1]: Leaving directory `/software/redis-2.8.8/src'

make: *** [test] Error 2


A.修改配置文件目录

mkdir /etc/redis

cp redis.conf /etc/redis


87、数据字段

用于枚举项目中的有限的

比如:status 表

88、easyui

屌丝公司 省去美工前端

自带一套页面的样式以及效果

89、maven 使用

apache maven

配置文件 (核心)

settings.xml

依赖

maven jdk -》1.7以上

在系统变量添加

环境变量的名称:MAVEN_HOME

变量值:就是maven软甲解压的目录d:\apache-maven-3.5.2

把MAVEN_HOME添加到path里 %MAVEN_HOME%\bin

验证maven是否配置成功:

打开dos窗口 输入: mvn –v


C:\Users\steve>mvn -v

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:1

3+08:00)

Maven home: D:\apache-maven-3.5.2\bin\..

Java version: 1.8.0_111, vendor: Oracle Corporation

Java home: C:\Program Files\Java\jre1.8.0_111

Default locale: zh_CN, platform encoding: GBK

OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"


90、用struts2.5版本,试了很久,一直报This method: add for action user1 is not allowed!

url:http://localhost:8888/struts2_0200_namespace/user/user1!add.action

这是因为 struts2.5 为了提升安全性,添加了 allomethod 这么个玩意。


解决方法是在配置文件中添加:


regex:.*

...

或者,针对action,在 action 块中添加


regex:.*

同样也支持在你的 action 上使用 @AllowedMethods 注解

默认的设置为


execute,input,back,cancel,browse,save,delete,list,index

全局设置是增量而不是覆盖的,支持正则和直接匹配方法,

源码在这两段


// com.opensymphony.xwork2.DefaultActionProxy#prepare

// com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod

老项目因为爆出漏洞然后我找了一下午这个问题,最终打开研发模式,并搜索官网文档解决。

struts 真是个坑啊。

91、JSP取得绝对路径方法

${pageContext.request.contextPath}

将用c:set放入一个变量中,然后在用的时候用EL表达式取出来。  

92、BeanFactory not initialized or already closed - call 'refresh' before access

Spring实例化BeanFactory的时候是默认到classPath下面查找名为applicationContext.xml的文件的,但是呢,你又没有指定,所以出现了这个错误。

就是spring 找不到xml文件 

93、mybatis Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5811105: defining beans  。。。。 root of factory hierarchy

仔细看 。。。。中的内容

我遇到的是我在映射文件中多了一个其他项目的映射文件  查了好多  

94、数据字典

枚举项目中有限个数的字典项

95、mysql的md5

INSERT INTO t_user(id,username,password) values("1","admin",MD5("1234"))

实在懒就是直接用mysql 自带的md5

96、任意元素提交表单



97、用户登出

@Controller
@RequestMapping("/user")
public class UserLogoutController {
@RequestMapping("/logout.do")
public String userLogout(HttpSession session) {
session.invalidate();
return "login";
}
}


98、 ssm 返回json 时 一直报错:java.lang.IllegalArgumentException: No converter found for return value of t

 1.原因:这是因为springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖。

   2.解决步骤:

     手动添加jackson依赖到pom.xml文件中


2.5.4
 

 com.fasterxml.jackson.core
 jackson-core
 ${jackson.version}


 com.fasterxml.jackson.core
 jackson-databind
 ${jackson.version}

如果还是没有解决,则进行以下步骤

   在springmvc配置文件中进行如下配置


 


   


99、ssm 重定向  即使配置了视图解析器还是可以用的

result = "redirect:../pages_common_index.do";



100、easyui的使用

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




EUI













	$(function(){
		
		
		$.messager.alert("标题","内容","error");
		
		$.messager.confirm("标题","内容",function(r){
			alert(r);
		});
		
		$.messager.show({
			 title:'标题',  	
			  msg:'内容',  	
			  timeout:5000,  	
			  showType:'slide'  
		});
	});





	
	控制面板
	
		
修改密码
联系管理员
退出系统