打印按钮,也可以用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/