JSP学习经验前言
熟悉JAVA语法很久后,迟迟才开始学习JSP.而学习JSP时,却只学了基本的用法就去学Struts和Hibernate,以致对JSP掌握得很不够。后来发现所学习的Struts框架实际上是“包装”了的JSP.所以,我在学习框架的时候也回头看看JSP.
以后应该不会再去专门学习JSP了。现在把一些JSP学习经验总结下,记录下来,以防来日忘了。
说明:以下所描述的环境是jdk1.5、tomcat5.5、 jsp2.0、 servlet2.4、JSTL1.1.2
一、基本配置
基本的重要的配置在web.xml 文件中。
1、Jsp属性组
<jsp-property-group> |
这个设置可以指定页面编码,页头页脚等等。
设置 UTF-8 的好处是不用在每个页面像这样指定编码
而设置 /include/header.jspf 使得每个页面都在头部包含header.jspf文件(通常把对标签的包含放在这里)。
2、数据库资源的引用
<resource-ref> <description>CourseDesignJDNIdatasourcedescription> <res-ref-name>jdbc/testres-ref-name> <res-type>javax.sql.DataSourceres-type> <res-auth>Containerres-auth> resource-ref> |
前提是要在TOMCAT的中配置
<ContextpathContextpath="/Course"docBase="Course"debug= "0"crosscontext="true"reloadable="true"> <ResourcenameResourcename="jdbc/test"auth= "Container"type="javax.sql.DataSource" maxActive="100"maxIdle="30"maxWait="10000" username="root"password="123456" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/databaseName? useUnicode=true&characterEncoding=UTF-8"/> Context> |
在程序中可以这样获取连接
publicstaticConnectiongetConnection() ...{Connectionconn=null; try ...{ ContextinitContext=newInitialContext(); ContextenvContext=(Context)initContext.lookup"java:/comp/env"); DataSourceds=(DataSource)envContext.lookup"jdbc/test"); conn=ds.getConnection(); } catch(Exceptione)...{ } returnconn; } |
3、过滤器
一般来说,字符编码的处理,我们会写一个过滤器。这个过滤器的JAVA类在TOMCAT的例子中有提供,可以按需来更改再拿来用。只要在配置文件中设置:
<filter-name>setCharacterEncodingfilter-name> |
4、标签的URI
JSTL是个东西,里面提供了很好用的标签(Tag),但也不一定满足我们的要求,就自己写标签了。把 *.tld 文件直接放到WEB-INF下,在自己定义的tld文件中加上元素,如:http://powerwind/course .
5、日志
只用过log4j这个日志包。首先是配置文件 log4j.properties (比较完整的配置,应根据情况选择):
log4j.rootLogger=DEBUG,INFO,A1,A2,A3 log4j.appender.A2=org.apache.log4j.RollingFileAppender log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender |
接着写个Servlet来加载log4j:
packagepowerwind.servlet; importjavax.servlet.*; publicclassLog4jInitextendsHttpServlet{ |
然后同时要在web.xml下配置:
<servlet> |
小型的应用中,我们并不常需要国际化。但是,如果网站要中文版和英文版的话,这个就不错啦。使用时很简单,把资源test_zh_CN.properties文件放到classes目录下,然后用JSTL的fmt标签调用。
其中var和scope属性不是必需的。三者结合,就可以实现国际化了。
<fmt:setLocalevaluefmt:setLocalevalue="zh_CN"scope=”session”/> <fmt:setBundlebasenamefmt:setBundlebasename="test"scope=”session”var=”hehe”/> <fmt:messagekeyfmt:messagekey="login.title"bundle=”${hehe}”scope=”session”/> |
[1] [2] 下一页