1.页面验证码:
response.reset();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
//out.clear();
//out=pageContext.pushBody();tomcat中需要 out.clear();out=pageContext.pushBody();这两行才不报错!
而weblogic 中需要 //out.clear();//out=pageContext.pushBody();才不报错!
2.tomcat中对于前台页面传递中文参数url需要在后台 name=new String(name.getBytes("ISO-8859-1"), "gbk");转换编码格式才能正常接收中文参数。 而对于weblogic则不用这样转码,如果转码了反而出错了。
因为前台代码为 ‘ <tr height="20" align="center" class="mytr" style="cursor:hand" onclick="sysaction22('<%=basePath%>argiSetAction!getSelArea.action?quId=<s:property value="#area.id.countyId"/>&&areaId=<s:property value="#area.id.localId"/>&&name=<s:property value="#area.localName"/>')"> ’ 参数的传递用了 <s: 标签,所以没法对参数进行转码,只能在后台转码,但是后台又要区分是weblogic和tomcat!
请问怎么通过代码区别他们?
response.reset();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
//out.clear();
//out=pageContext.pushBody();tomcat中需要 out.clear();out=pageContext.pushBody();这两行才不报错!
而weblogic 中需要 //out.clear();//out=pageContext.pushBody();才不报错!
2.tomcat中对于前台页面传递中文参数url需要在后台 name=new String(name.getBytes("ISO-8859-1"), "gbk");转换编码格式才能正常接收中文参数。 而对于weblogic则不用这样转码,如果转码了反而出错了。
因为前台代码为 ‘ <tr height="20" align="center" class="mytr" style="cursor:hand" onclick="sysaction22('<%=basePath%>argiSetAction!getSelArea.action?quId=<s:property value="#area.id.countyId"/>&&areaId=<s:property value="#area.id.localId"/>&&name=<s:property value="#area.localName"/>')"> ’ 参数的传递用了 <s: 标签,所以没法对参数进行转码,只能在后台转码,但是后台又要区分是weblogic和tomcat!
请问怎么通过代码区别他们?
解决方案 »
- 程序画图,显示节点和节点之间的关系,连线需要曲线,连线不能交叉。
- win7 + 数据库SQL server进来下
- struts2导出excle中如何得到要导出的表的数据。
- 关于获得URL的问题
- 同时访问webservice的问题
- java实现导出excel 导出后的excel一打开 就报“无法读取文件”的错误,请大虾帮忙啊
- 新手求救 取值问题
- 数据库设计
- tomcat 的连接池配置?
- 结交JSP/Servlet/javaBean/MVC/Tomcat/Weblogic高手
- tomcat报错java.lang.NoClassDefFoundError
- 关于Frameset和dTree的混合使用的问题
<% String info = application.getServerInfo() %>
然后可以根据内容去判断。
但是,输出验证码为啥要 out.clear() 和 pageContext.pushBody() ?
问题2:
那是因为你没有设置Tomcat关于URI的缺省编码,所以它默认是ISO8859-1,而Weblogic默认就是UTF-8找找 conf\server.xml<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
2. tomcat默认解码uri的设置,我试过可以,但是一般该项目部署的容器里还有其他项目,所以这个不是最好的解决办法!!!
<%@ page import="java.util.Random" %>
<%@ page import="java.awt.Graphics" %>
<%@ page import="java.awt.Font" %>
<%@ page import="java.awt.Color" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<%!
Color getRandColor(int fc,int bc){
//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
response.reset();
response.setContentType("image/jpeg");
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
//response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
//画边框
g.setColor(new Color(100,100,100));
g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for(int i=0;i<155;i++){
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
String sRand="";
for(int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
// 将认证码存入SESSION
session.setAttribute("yanzhengma",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
//ImageIO.write(image,"JPEG",response.getOutputStream());
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
encoder.encode(image);
//out.clear();
//out=pageContext.pushBody();
%>
这个我们项目里面的验证码jsp文件。
关于转码,你说的统一编码是怎么统一的? 前台编码依据的是谁? 后台解码依据的是谁? 编码这一块我都快被网上的说法给弄晕了。自己试也没试出个所以然来!!!