2017年6月19日

jsp传递中文乱码解决方法

request.setCharacterEncoding("UTF-8")页面也需要设置转码的:
页面:(.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
response.setContentType("text/html;charset=UTF-8");

处理文件:(.java)
转码的三种方法:
A 接受参数时进行编码转换

String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。

B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。

这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。

C 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。

新手可以暂时不考虑过滤器的方法,过滤器一般都会涉及到配置开发,要修改web.xml,还算是比较麻烦的,建议接触java一段时间后再考虑使用过滤器的方法。或者如果应用了struts框架,可以查看struts的转码过滤器配置。
实际例子:
<%request.setCharacterEncoding("UTF-8")%>放在jsp<head></head>之间
jspforward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <% request.setCharacterEncoding("UTF-8");%> </head> <body> <jsp:forward page="/forwardresult.jsp"> <jsp:param name="name" value="李海"></jsp:param> <jsp:param name="age" value="29"></jsp:param> </jsp:forward> </body> </html>
jspresult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%=request.getParameter("name")%> <%=request.getParameter("age")%> </body> </html>


posted @ 2017-06-19 14:46 蓝胖 阅读(317) | 评论 (0)编辑 收藏

jsp访问mysql数据库 class not found

遇到问题:com.mysql.jdbc.Driver class not found 我在项目中的WEB-INF/lib中添加mysql-connector-java-5.6-bin jar包后在eclipse中选中项目刷新,在lib中选中mysql-connector-java-5.6-bin jar右键点击addbulidPath成功解决问题 完整的代码如下:

<%@page import="java.sql.DriverManager" import="java.sql.Connection" import="java.sql.Statement" 
import="java.sql.ResultSet" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
Statement stmt=conn.createStatement();
String sql="select * from person ";
ResultSet rs=stmt.executeQuery(sql);
%>
<table bgcolor="green" border="1">
<tr>
<td>id</td>
<td>name</td>
<td>sex</td>
<td>age</td>
</tr>
<%
while(rs.next()){
%>
<tr>
<td><%=rs.getString("id") %></td>
<td><%=rs.getString("name") %></td>
<td><%=rs.getString("sex") %></td>
<td><%=rs.getString("age")%></td>
</tr>
<% }%>
</table>
</body>
</html>

posted @ 2017-06-19 14:46 蓝胖 阅读(212) | 评论 (0)编辑 收藏

Eclipse 一直提示 loading descriptor for 解决

第一次没有找到所以截图下来
你Eclipse左侧的Project Explorer 最右上角有一个小钮,鼠标移上去时提示"View Menu".




你点一下,在弹出的上下文菜单中选择"Customize View..." 弹出一个对话框.



你选择: Content 选项卡,在里面把没用的去掉就行了 J2EE WEB loading descriptor .

posted @ 2017-06-19 14:45 蓝胖 阅读(484) | 评论 (0)编辑 收藏

解决MyEclipse吃内存,让MyEclipse速度飞起来

前言:MyEclipse5.5 大小 139M;MyEclipse6.5 大小 451M;MyEclipse7.0 大小 649M!下载服务器又是国外的。。。下载速度累人也就罢了,只要你工作性能一流。不幸的是,MyEclipse 属于狂吃内存的主,特别是 MyEclipse7.0 运行起来,基本上不用干其他工作了,它是一会Quick update,一会 updating indexes ,你耐着性子等它 update 完,它老人家又开始自动 validation 了!

实在忍无可忍,作者收集了一些关于解决 MyEclipse 的耗内存的办法,经本人测试非常有效,共享出来,希望可以方便更多的朋友。

1 老是弹出Quick update error 、关闭myeclipse的Quick Update自动更新功能


这个问题的解决办法是关闭自动更新

Windows > Preferences > MyEclipse Enterprise Workbench > Community Essentials, 
把选项 "Search for new features on startup"的前勾去掉即可。

2 关闭updating indexes

Window > Preferences > Myeclipse Enterprise Workbench > Maven4Myeclipse > Maven>禁用Download repository index updates on startup 。

3 关闭MyEclipse的自动validation

validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下,速度立马提升好几个档次

windows > perferences > myeclipse > validation 
将Build下全部勾取消

如果你需要验证某个文件的时候,我们可以单独去验证它。方法是,在需要验证的文件上( 右键 -> MyEclipse -> Run Validation 。

4 启动优化,关闭不需要使用的模块

一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,所以可以将一些不使用的模块禁止 加载启动。

Window > Preferences > General > Startup andy Shutdown 在这里列出的是MyEclipse启动时加载的模块 我这里只让它加载tomcat5 勾选 MyEclipse EASIE Tomcat 5 。

怎样才能知道哪些启动项有用呢?我现在把我知道的启动项用处说一下,还有很多不懂的,希望大家懂的回复在下面啊: 
WTP :一个跟myeclipse差不多的东西,主要差别是 WTP 是免费的,如果使用myeclipse,这个可以取消 
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消 
Derby:一种保存成 jar 形式的数据库,我没用到,取消 
一大排以 MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消,比如我只选了tomcat 。

5 去掉MyEclipse的拼写检查(如果你觉的有用可以不去)

拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处

 Window > perferences > General >  Editors > Text Editors > Spelling > 将Enable spell checking复选框的勾选去掉。

6 去掉MyEclipse繁杂的自带插件自动加载项


 Window > perferences > General > Startup and Shutdown > 将Plug-ins activated on startup 中的复选框有选择性的勾选去掉。

7 修改MyEclipse编辑JSP页面时的编辑工具  


 Window > perferences > General > Editors > File Associations > 
  在File types 中选择 *.jsp > 在Associated editors 中将"MyEclipse JSP Editor"设置为默认。

8 修改MyEclipse安装目录的eclipse.ini文件,加大JVM的非堆内存

具体内容如下:
 -clean
 -showsplash
 com.genuitec.myeclipse.product.ide
 --launcher.XXMaxPermSize
 256m
 -vmargs
 -Xms128m
 -Xmx512m
 -Duser.language=en 
 -XX:PermSize=128M 
 -XX:MaxPermSize=256M

把下面的那个 -XX:MaxPermSize 调大,比如 -XX:MaxPermSize=512M,再把 -XX:PermSize 调成跟 -XX:MaxPermSize一样大

posted @ 2017-06-19 14:43 蓝胖 阅读(1149) | 评论 (0)编辑 收藏

an internal error occurred during building workspace错误

Eclipse导入了一个比较大的项目,出现了an internal error occurred during building workspace错误。

网上搜了一下,据说是内存溢出问题。可以通过修改eclipse.ini文件解决,

 

优化之后的ini文件内容:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m

--launcher.defaultAction
openFile

-vm
C:\java\1.6\bin

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m


以下为查找得的一些资料,解释我们在修改的参数是什么意思。


        1.堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

        2.堆内存分配
       JVM初始分配的内存-Xms指定,默认是物理内存的1/64;JVM最大分配的内存-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

        3.非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

        4.JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

        举例说明含义:
        -Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配
        -Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。

    说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。

        PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
        -XX:PermSize=64MB 最小尺寸,初始分配 
         -XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
         过小会导致:java.lang.OutOfMemoryError: PermGen space
          MaxPermSize缺省值和-server -client选项相关。-server选项下默认MaxPermSize为64m
          -client选项下默认MaxPermSize为32m

        PS:不同厂家的jdk垃圾回收算法不一样。在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率。

        下面再简单的整理一下优化MyEclipse速度的主要方法:
        1.修改myeclipse.ini。
        2.取消自动validation
        3.勾掉无用插件。
        4.修改启动加载模块
 下面附上详细的优化MyEclipse速度方法:(转载
        http://yufenfei.javaeye.com/blog/376464
        http://blog.csdn.net/defonds/archive/2009/07/10/4338782.aspx
        http://zhangpengshou.javaeye.com/blog/198476

posted @ 2017-06-19 14:38 蓝胖 阅读(279) | 评论 (0)编辑 收藏

jsp链接mysql数据库

遇到问题:com.mysql.jdbc.Driver class not found 我在项目中的WEB-INF/lib中添加mysql-connector-java-5.6-bin jar包后在eclipse中选中项目刷新,在lib中选中mysql-connector-java-5.6-bin jar右键点击addbulidPath成功解决问题 完整的代码如下:

<%@page import="java.sql.DriverManager" import="java.sql.Connection" import="java.sql.Statement" 
import="java.sql.ResultSet" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
Statement stmt=conn.createStatement();
String sql="select * from person ";
ResultSet rs=stmt.executeQuery(sql);
%>
<table bgcolor="green" border="1">
<tr>
<td>id</td>
<td>name</td>
<td>sex</td>
<td>age</td>
</tr>
<%
while(rs.next()){
%>
<tr>
<td><%=rs.getString("id") %></td>
<td><%=rs.getString("name") %></td>
<td><%=rs.getString("sex") %></td>
<td><%=rs.getString("age")%></td>
</tr>
<% }%>
</table>
</body>
</html>

posted @ 2017-06-19 14:33 蓝胖 阅读(148) | 评论 (0)编辑 收藏

仅列出标题  
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜