Web 开发笔记 #03# Read context parameter/web.xml values in a non-servlet java file
2018-03-14 15:40
399 查看
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?
临时解决方案:手动把编译出来的 .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 也不需要手动去关联,开发环境帮你做好了。保持默认设置比较不容易出错。。
可能是这样的。
所以 最好 尽量 把 jsp 放 在 WEB-INF 内, WEB-INF 外放 无状态(没有先决条件)的入口 .html
像这样。
总之 PreparedStatement 和 resultset 最好都放在 finally 里关掉。
本来是采用方案一(
于是就用方案二,增设一个 ServletContextListener,步骤如下:
/
web.xml
/
算是一种冷门的读取方式 :p
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
相关文章推荐
- 笔记---初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- Tomcat 与java web 开发技术详解笔记(二)----Servlet
- Java web 开发笔记 第五章 Servlet编程三
- Java web 开发笔记 第五章 Servlet编程四
- JavaWeb开发之Servlet的请求流程剖析-图片版 (跟龙哥学javaweb)笔记
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之35.安装使用MySQL及SQL Manager 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之01.JDBC简介 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之04.JDBC Resultset 推荐
- Java开发学习笔记之七:servlet-控制会话
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之09.JDBC DAO设计模式
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之12.Servlet基础(2)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03.JDBC Statement(1)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(1)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之10.Web_工程结构 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之02.JDBC Connection 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之05.JDBC MetaData
- 深入体验Java Web开发内幕-核心基础(看张孝祥的书的笔记一)
- Tomcat 与java web 开发技术详解笔记(三)----JSP
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
- Java开发学习笔记之十:servlet事件