初学jsp,遇到不少问题,顺带记录📝一下,以免下次再遇到不知道怎么解决。jsp的功能真的是强大啊,我也想写出整套网站来,做一条龙服务里的一条龙。

  • Windows下面安装Tomcat出现控制台乱码

    Tomcat: 9.0.16
    根本原因,tomcat 输出的东西,与cmd控制台或者IDE控制台编码不一致。

误区: 修改 JAVA_OPTS -Dfile.encoding=GBK。 原因:影响范围太大。
应修改tomcat输出内容的编码,%CATALINA_HOME%/conf/logging.properties
9.0.14版本比9.0.12版本多了如下代码

1
java.util.logging.ConsoleHandler.encoding = UTF-8

删除:

1
#java.util.logging.ConsoleHandler.encoding = UTF-8

或者改成和控制台一致的编码比如GBK
参考原文


  • 网页中文乱码:
    在jsp文件head标签中贴上:
    1
    2
    3
    4
    5
    <meta charset="UTF-8">
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <% request.setCharacterEncoding ("UTF-8");%>
    <% response.setCharacterEncoding ("UTF-8"); %>

同时最好将tomcat配置文件目录下的server.xml内修改对应字段为:

1
2
3
4
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />


  • IDEA部署到远程tomcat
    需要在catalina.sh里面添加:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # IDEA Tomcat
    CATALINA_OPTS="-Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=1099
    -Dcom.sun.management.jmxremote.rmi.port=1099
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false
    -Djava.rmi.server.hostname=ip.ourfor.top
    -agentlib:jdwp=transport=dt_socket,address=15833,suspend=n,server=y"
    export CATALINA_OPTS

如果出现:

1
2
3
4
15:41	Error running 'Tomcat remote'
Unable to connect to the ip.ourfor.top:1099, reason:
java.rmi.ConnectException: Connection refused to host: ip.ourfor.top; nested exception is:
java.net.ConnectException: Connection refused (Connection refused)

注意添加:

1
-Dcom.sun.management.jmxremote.rmi.port=1099

如果使用yum或者dnf安装tomcat,则没有catalina.sh这个文件,所以我们可以编辑/etc/tomcat/conf.d里面的文件.

1
2
touch jmx.conf    #只有.conf文件会被tomcat读取
vim jmx.conf #编辑文件

由于这个文件被当做shell命令参数执行,所以我们需要转义回车字符,那么我们添加的配置文件为:

1
2
3
4
5
6
7
CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.rmi.port=1099 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=ip.ourfor.top \
-agentlib:jdwp=transport=dt_socket,address=15833,suspend=n,server=y"

  • fedora安装完整tomcat:
    1
    sudo dnf install tomcat-webapps tomcat-admin-webapps tomcat -y

查看安装路径:

1
rpm -ql tomcat |more

安装路径及其映射:
屏幕快照 2019-03-10 下午3 56 09

  • 开启Tomcat热加载
    修改context.xml 设置autoDeploy=true, reloadable=true

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    19 <Context reloadable="true" autoDeploy="true">
    20
    21 <!-- Default set of monitored resources. If one of these changes, the -->
    22 <!-- web application will be reloaded. -->
    23 <WatchedResource>WEB-INF/web.xml</WatchedResource>
    24 <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    25 <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    26
    27 <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    28 <!--
    29 <Manager pathname="" />
    30 -->
    31 </Context>
  • 使用JavaMail发送邮件是注意

  1. 使用网易邮箱遇到以下错误553 Mail from must equal authorized user

解决: 发信人地址必须是当前登录邮箱的认证用户地址
message.setFrom(new InternetAddress(sender));

  1. 一般的mail
    设置
1
2
3
4
5
6
String mailServer = "smtp.126.com";
Properties pro = new Properties();
pro.put("mail.smtp.host",mailServer);
pro.put("mail.smtp.auth","true");
pro.put("mail.smtp.ssl.enable",true);
pro.put("mail.smtp.port","465");