欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

Tomcat与JavaWeb开发技术详解(javaweb开发中,在配置tomcat)

数码知识

林宝蕊优秀作者

原创内容 来源:小居数码网 时间:2024-08-12 20:26:02 阅读() 收藏:52 分享:51

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1639个文字,大小约为7KB,预计阅读时间5分钟。

前言:在各类网站论坛上,没有找到与工作比较贴切的技能,所以特此写一些对刚步入工作或者工作中没有重视的技能与问题,各位大牛请及时关闭文章.

javaweb开发中,在配置tomcat

ps:文中所有标点都是英文的,看官请不要在意.为了便于平时敲代码,所以中文输入法也默认了英文标点(防止各类因为标点引起的低级错误).纯属个人原创见解,若不正确,请各位批评指正.

tomcat常用配置

修改Tomcat的访问端口

我们找到tomcat安装目录的conf子目录下的server.xml文件,大致是70行左右,如下图:

默认端口8080

我们可以看到其中有个port="8080",一般上线前我们把这个修改成80,这样访问路径就变成了http://localhost/(结合我的上一篇文章中修改项目访问路径),图中其他属性保持不变

修改Tomcat的编码格式

接着上一个端口配置,我们在Connector标签中再追加一个属性URIEncoding="UTF-8",配置内容就是这么简单,不过在这边说明一下为什么要增加这个配置,以及简要介绍原理.

设置编码格式

默认情况下,Tomcat会将用户(浏览器端)打包的请求内容使用ISO8859-1编码格式进行拆包解码(理解成request),再调用我们编写的业务逻辑程序,然后使用ISO8859-1编码格式进行打包编码反馈给用户(理解成response).而ISO8859-1编码格式是不支持中文的编解码的,简而言之会出现乱码.

这边提到了乱码,我们就总结一下如何避开乱码问题,说几个关键的配置区域

1.容器层:上面已经说明了tomcat容器需要配置拆包打包的默认编码格式

2.展示层:再来JSP中,我们应该都知道需要配置页面编码格式,一般我们在页面最上面需要配置

jsp页面顶部编码格式配置

head标签中编码格式配置

3.持久层:项目使用的数据库也同样使用UTF-8的编码格式,这个根据具体的数据库来配置,这边不做介绍

4.编码层:将我们编写的java项目中的代码编码格式统一成UTF-8,以MyEclipse为例,右击我们的项目,点击properties

项目代码的编码格式

5.业务层:将程序运行时的编码格式统一成UTF-8,即在每一个处理请求的地方使用request.setCharacterEncoding("UTF-8");当然我们不会这么蠢,这样写起来又累又不方便维护,所以我们需要写一个通用编码过滤器,在这个过滤器中配置request的编码格式.而如果你所在公司使用了框架,那这个就不用我们担心啦,我举个springMVC的配置例子.我们只需要在web.xml中配置CharacterEncodingFilter这个过滤器即可,如下图:

web.xml中配置编码格式

配置Tomcat内存(针对Java内存溢出详解)

其实我写本文章的重心在这里,因为我在各类文章论坛中都没有找到比较好的配置方案,可能也是我涉猎不够吧,不过在此我总结一下自己的使用心得以及别人的见解.

常见问题一 : java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出

一般电脑内存不够大,我们开发的项目又比较大的时候,会出现该错误.下面解释一下原理:

JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存(Heap的大小是Young Generation 和Tenured Generaion 之和),在JVM中如果98%的时间是用于GC,且可用的Heap size 不足2%的时候将抛出此异常信息.

解决方法:手动设置JVM Heap(堆)的大小.

-server : 一定要作为第一个参数,在多个CPU时性能佳

-Xms : java Heap初始大小, 默认是物理内存的1/64.

-Xmx : java heap最大值,建议均设为物理内存的一半,不可超过物理内存.

常见问题二 : java.lang.OutOfMemoryError: PermGen space ----PermGen space溢出

一般电脑内存不够大,我们开发的项目Class类又比较多的时候,会出现该错误.下面解释一下原理:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域.由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 GC不会在主程序运行期对PermGen space进行清理,所以如果你的APP会载入很多CLASS的话,就很可能出现PermGen space溢出.

解决方法:手动设置MaxPermSize大小.

-XX:PermSize : 设定内存的永久保存区初始大小,缺省值为64M.(可使用visualvm.exe查看)

-XX:MaxPermSize : 设定内存的永久保存区最大 大小,缺省值为64M.(可使用visualvm.exe查看)

常见问题三 : java.lang.StackOverflowError ---- 栈溢出

栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的.函数的调用过程都体现在堆栈上了.调用构造函数的 “层”太多了,以致于把栈区溢出了.通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要 1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间.通常栈的大小是1-2MB的.通常递归也不要递归的层次过多,很容易溢出.

解决方法:修改我们的java程序.

不同环境下的Tomcat内存配置方法

在生产环境中Tomcat内存设置不好很容易出现jvm内存溢出.上一段落已经进行各类内存问题的详解以及配置参数的简要介绍,下面我们介绍一下各种环境下的具体配置方法.

1. 命令行展示的tomcat:

修改TOMCAT_HOME/bin/catalina.sh(windows中是catalina.bat), 位置cygwin=false前,添加如下语句

JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m"

2.如果tomcat注册成了windows服务,使用tomcat目录中的/bin/tomcat8w.exe修改就可以了.如下图

tomcat服务内存配置方法

3.如果要在myeclipse中启动tomcat,上述的修改就不起作用了,可如下设置:

Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的Optional Java VM arguments中添加如下内容:

-Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m

最后说一句:不管配置什么,以及配置的参数值是多少,都需要不断的调试,不要轻易放弃,比如tomcat的内存配置,也不是越大越好,适合你的计算机配置才是最好的,所以需要配置后的多次测试

上面就是小居数码小编今天给大家介绍的关于(javaweb开发中,在配置tomcat)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

94%的朋友还想知道的:

(271)个朋友认为回复得到帮助。

部分文章信息来源于以及网友投稿,转载请说明出处。

本文标题:Tomcat与JavaWeb开发技术详解(javaweb开发中,在配置tomcat):http://sjzlt.cn/shuma/155099.html

猜你喜欢