Web开发相关笔记 #03#
HTTP Status 500 ※ jsp 放在 WEB-INF 外面 ※ 使用 JDBC 时需要 close 什么 ※ execute 和 executeUpdate ※ How can I read context parameter/web.xml values in a non-servlet java file?
1、明明写了 servlet 却抛出这个,环境:IntelliJ IDEA
HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelect
临时解决方案:手动把编译出来的 .class 复制到 web/WEB-INF/classes 目录下。
持续化解决方案:IntelliJ IDEA 2017 配置Tomcat 运行Web项目
总之是要在 Project Structure --> Modules 中把 compiler output 和 WEB-INF/classes 以及 依赖包和 WEB-INF/lib 相对应起来,具体操作看上面教程。
后来发现,classes 是不需要自己建立的(lib 最好自建一下), compiler output 和 WEB-INF/classes 也不需要手动去关联,开发环境帮你做好了。保持默认设置比较不容易出错。。
2、把 jsp 放在 WEB-INF 外面并直接访问会发生什么
可能是这样的。
所以 最好 尽量 把 jsp 放 在 WEB-INF 内, WEB-INF 外放 无状态(没有先决条件)的入口 .html
像这样。
3、使用 JDBC 时需要 close 什么?
http://blog.csdn.net/wc0077/article/details/51083374
总之 PreparedStatement 和 resultset 最好都放在 finally 里关掉。
4、PreparedStatement 的 execute方法和executeUpdate方法有性能方面的区别吗
通常我们没有必要使用execute方法来执行SQL语句,而是使用executeQuery或executeUpdate更适合,但如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句了
5、How can I read context parameter/web.xml values in a non-servlet java file? -- from stackoverflow
我的动机和提问者相同,打算从 web.xml 读数据库的配置(用户名、密码什么的)。
本来是采用方案一(<env-entry> 那个
),后来发现对代码结构影响很不良就放弃了
Context env = (Context)new InitialContext().lookup("java:comp/env");
于是就用方案二,增设一个 ServletContextListener,步骤如下:
package com.example.model; import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; public class DbConfig implements ServletContextListener { public static String JDBC_DRIVER;
public static String DB_URL;
public static String USER;
public static String PASS; @Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext context = servletContextEvent.getServletContext(); JDBC_DRIVER = context.getInitParameter("JDBC_DRIVER");
DB_URL = context.getInitParameter("DB_URL");
USER = context.getInitParameter("USER");
PASS = context.getInitParameter("PASS");
// 之后在其它类里临时创建该对象拿数据
} @Override
public void contextDestroyed(ServletContextEvent servletContextEvent) { }
}
/
web.xml
<context-param>
<param-name>JDBC_DRIVER</param-name>
<param-value>org.gjt.mm.mysql.Driver</param-value>
</context-param> <context-param>
<param-name>DB_URL</param-name>
<param-value>jdbc:mysql://localhost:3306/mangast</param-value>
</context-param> <context-param>
<param-name>USER</param-name>
<param-value>root</param-value>
</context-param> <context-param>
<param-name>PASS</param-name>
<param-value></param-value>
</context-param> <listener>
<listener-class>
com.example.model.DbConfig
</listener-class>
</listener>
/
private static Connection conn = null; /*
加载数据库驱动
*/
static {
DbConfig dbConfig = new DbConfig();
try {
Class.forName(dbConfig.JDBC_DRIVER);
conn = DriverManager.getConnection(dbConfig.DB_URL, dbConfig.USER, dbConfig.PASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
算是一种冷门的读取方式 :p
Web开发相关笔记 #03#的更多相关文章
- Web开发相关笔记 #04# WebSocket
本文的主要内容: HTTP VS. WebSocket WebSocket 的客户端实现(JavaScript) WebSocket 的服务端实现(Java & apache WebSocke ...
- Web开发相关笔记 #01#
前端学习纲要 ※jQuery 参考 ※ 整理 Chrome 收藏夹的小技巧 ※ 解决 AJAX 跨域获取 cookie ※ 记一次 MyBatis 相关的 debug [1] 前端学习纲要: ♦ 第一 ...
- Web开发相关笔记 #05# MySQL中文无法匹配
2018-06-02 在 Class.forName 的时候记得先尝试 import 一下. 2018-06-04 1.JDBC SELECT 查询,中文条件查不出东西,可能是字符编码问题: Stri ...
- Web开发相关笔记 #02#
[1] HTML 插入第三方. [2] [3] JavaScript 回调函数 & 模块化 --> 用变量封装数据.方法 --> 类比 Java 中的 package var fe ...
- Web开发相关笔记
1.MySQL命令行下执行.sql脚本详解http://database.51cto.com/art/201107/277687.htm 在可视化工具里导出.sql脚本 --> 放命令行里运行 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- Django Web开发指南笔记
Django Web开发指南笔记 语句VS表达式 python代码由表达式和语句组成,由解释器负责执行. 主要区别:表达式是一个值,它的结果一定是一个python对象:如:12,1+2,int('12 ...
随机推荐
- webstorm配置babel自动转译es6的方法
1.npm安装babel npm install -g babel-cli 2.npm安装Babel的preset npm install --save-dev babel-preset-es2015 ...
- 控制input框的内容输入为数字
<script> function toNum(v) { return v.replace(/[^\d.]/g, '').replace(/^\./g, "").rep ...
- iconfont阿里爸爸做的开源图库
iconfont 三种使用姿势 1.unicode格式 优点 兼容性最好,支持ie6+ 支持按字体的方式去动态调整图标大小,颜色等等 缺点 不支持多色图标 在不同的设备浏览器字体的渲染会略有差别,在不 ...
- ST-LINK使用注意
利用ST-LINK下载程序注意事项: 1.接线 按照上面图对着自己的开发板连接相应的引脚就可以了. 2.keil5配置 线连接完之后,要对自己的工程进行相关的 配置才能正确进行下载. 首先选择ST-L ...
- 次小生成树(poj1679)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20737 Accepted: 7281 D ...
- 最小生成树的变形(次小生成树hdu4081)
hdu4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- chinese-typesetting:更好的中文文案排版
欢迎指正.GitHub 地址:https://github.com/jxlwqq/chinese-typesetting 更好的中文文案排版 统一中文文案.排版的相关用法,降低团队成员之间的沟通成本, ...
- 为什么 要弄清楚 mysql int(5) int(11) bigint 自建mysql主键id python random 科学计数法
场景: 有1.2亿条问答数据,相同问题的不同答案为不同条的数据,且该表数据逐日递增: 第三方需求(不合理): 将问题.答案数据分别放入问题表.答案表: 问题表的主键为整数,在答案表中,每行数据有相应的 ...
- mysql实现开窗函数、Mysql实现分析函数
关键字:mysql实现开窗函数.Mysql实现分析函数.利用变量实现窗口函数 注意,变量是从左到右顺序执行的 --测试数据 CREATE TABLE `tem` ( `id` ) NOT NULL A ...
- centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课
centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...