一路积累

打印按钮,也可以用a等标签实现
οnclick="window.print()" 点击启动打印机 兼容IE,chrome,火狐,open等所有主流浏览器

<button type="button" οnclick="window.print()">打印</button>


异常:

1.  java.lang.NoClassDefFoundError:org/apache/neethi/builders/AssertionBuilder

缺少: neethi-3.0.1.jar

 

2.      java.lang.NoClassDefFoundError:

        javax/wsdl/extensions/ElementExtensible

缺少: wsdl4j-1.6.2.jar

 

3.      mysql异常: 1130 -Host 'Administrator' is not allowed to connect to this MySQL server

解决:

错误代码是1130,ERROR 1130: Host 10.0.0.1  is not allowed to connect to thisMySQL server 

无法给远程连接的用户权限问题。

登录mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。。 
mysql> use mysql; 
mysql> select 'host' from user where user='root'; 
mysql> update user set host = '%' where user ='root'; 
mysql> flush privileges; 
mysql> select 'host' from user where user='root';


4. 生成二维码插件:

<span style="font-size:14px;"><script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.qrcode.js"></script> 
<script type="text/javascript" src="js/qrcode.js"></script> 
<script type="text/javascript">
   function creat(){
      $("#qrcodeTable").html("");
       var url=$("#url").val();
       $("#qrcodeTable").qrcode({
        render  : "table",
        text    : url,
        width:"200",
        height:"200"
    });
   }
$(document).ready(function(){
    $("#qrcodeTable").qrcode({
        render  : "table",
        text    : "http://www.xwcms.net",
        width:"200",
        height:"200"
    });
});
</script></span>


5. web开发中常用的url转义字符

<span style="font-size:14px;">1.   +         URL中+号表示空格                      %2B
2.   空格      URL中的空格可以用+号或者编码          %20
3.   /         分隔目录和子目录                      %2F
4.   ?         分隔实际的URL和参数                   %3F
5.   %         指定特殊字符                          %25
6.   #         表示书签                              %23
7.   &         URL中指定的参数间的分隔符             %26
8.   =         URL中指定参数的值                     %3D</span>


6. request获取IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 
    如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.bt285.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP。
    经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问http://www.5q520.cn /index.jsp/ 时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。
    于是可得出获得客户端真实IP地址的方法一:

<span style="font-size:14px;">public String getRemortIP(HttpServletRequest request) {
  if (request.getHeader("x-forwarded-for") == null) {
   return request.getRemoteAddr();
  }
  return request.getHeader("x-forwarded-for");
 } </span>

可是当我访问http://www.5a520.cn /index.jsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127.0.0.1 或 192.168.1.110了,而我访问http://192.168.1.110:2046/index.jsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 项默认是为on,如果 forwarded_for 设成了 off  则:X-Forwarded-For: unknown
    于是可得出获得客户端真实IP地址的方法二:

<span style="font-size:14px;">public String getIpAddr(HttpServletRequest request) {
       String ip = request.getHeader("x-forwarded-for");
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getRemoteAddr();
       }
       return ip;
   } 
</span>
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
    答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
    如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100用户真实IP为: 192.168.1.110


7. cxf设置拦截器获取客户端访问ip

<span style="font-size:14px;">package com.hh.utils;

import javax.servlet.http.HttpServletRequest;

import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.transport.http.AbstractHTTPDestination;

public class IpAddressInInterceptor extends AbstractPhaseInterceptor<Message> {

	public IpAddressInInterceptor() {
		super(Phase.RECEIVE);
	}

	public void handleMessage(Message message) throws Fault {
		HttpServletRequest request = (HttpServletRequest) message
				.get(AbstractHTTPDestination.HTTP_REQUEST);
		if (null != request) {
			String ipAddress = getUserIpAddr(request);// 获取到ip可进行处理
			System.out.println(ipAddress);
		}
	}

	/**
	 * 获取IP地址的方法
	 * 
	 * @param request
	 * @return
	 */
	private String getUserIpAddr(HttpServletRequest request) {
		String ip = getIpAddr(request);
		if (null != ip && ip.indexOf(",") > 0) {
			String[] arr = ip.split(",");
			ip = arr[arr.length - 1].trim();// 有多个ip时取最后一个ip
		}
		return ip;
	}

	public String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}
}</span>

JAVA WEB项目启动报错: create[8005]
java.net.BindException: Address already in use: JVM_Bind错误剖析:

解决办法:

create[8005], 应该是在创建端口时出错了,java.net.BindException: Address already in use: JVM_Bind

说明这个端口已经在使用了,tomcat当然不能用了,赶紧到安装目录/conf/下找到server.xml,找到使用8005端口的语句,把端口号改成不在使用的(8006)。 


 input输入框设置默认值,输入内容时默认值消失: <input type="text" name="name" placeholder="请输入名称" />


layer是一款近年来口碑极佳的web弹层组件   官网地址: http://layer.layui.com/


发布了90 篇原创文章 · 获赞 21 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/yx13649017813/article/details/45504969