???????????????????????????????????????????????????????? 试驾tomcat7
一、起因
????? 今天暖暖的阳光照的人很舒服,一个人的我也没地方可去,忽然想到tomcat7已经发布了,带着好奇的心情准备尝试尝试了,开始了。
?
二、苦恼
????? 弄了一早上发现tomcat7并不像5、6那么容易跑起来。赶快看了一下,TOMCAT 7新特性如下:
1 使用随机数去防止跨站脚本攻击;
2 改变了安全认证中的jessionid的机制,防止session攻击;
3 内存泄露的侦测和防止;
4 在war文件外使用别名去存储静态内容;
TOMCAT 7的增强功能
5 对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持;
6 更容易将Tomcat内嵌到应用去中去,比如JBoss;
7 异步日志记录;
根据Mark Thomas,Tomcat 7委员会的经理的说法,Tomcat 7最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性。
????? 看了这么多好玩的东西,今天不吃饭也要把它整起来啊。
?
三、开始之旅。
????? 1、tomcat7支持的JDK版本最低是1.6,所以用老版本的朋友们及时升级或者替换,否则在启动时会报
java.lang.UnsupportedClassVersionError: Bad version number in .class file
?
????? 2、升级JDK1.6之后,照着tomcat6配置的情况配了一下,启动又报错,错误为
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Exception in thread "main"
?????? 貌似是类加载器没有把类加载起来,后来google了一下,发现遇到这种问题的人还真不少。解决办法很简单:
????? 在控制台tab页双击servertab页的 tomcat7 出现配置页面,在General Information下点击Open lauch configuration ,在 Classpath tab页下, User Entries 下 点击Add External JARs 把tomcat7 bin目录下的tomcat-juli.jar包添加上,OK,启动没有问题。
?
三、登入tomcat管理页面
???? 默认下对权限的配置是注释过的,所以登了很多次都不对,修改tomcat7 下conf目录tomcat-user.xml 大约28-34行把注释去掉,加入一行 <user username="tomcat" password="" roles="admin,manager-gui"/>? 用户名和密码自己定义,OK 在浏览器输入http://localhost:8080 进入之后点manage app 时输入即可.
?
四、开始第一个web项目。
????? 步骤如下:
????? 1 新建一个web项目,这就不说了,目录结构见图2
????? 2 在Web-Content下随意新建一个jsp页面。
????? 3 在src 下新建一个java类,用作servlet,因为tomcat7采用 servle3.0,使用注解式servlet配置更加方便。
@WebServlet(urlPatterns = { "/test" })?
public class ServletAction extends HttpServlet{
??? private static final long serialVersionUID = 1L;
??? protected void doGet(HttpServletRequest req, HttpServletResponse resp)?
??? ??????????????????? throws ServletException, IOException {?
??? ??????? PrintWriter out = resp.getWriter();?
??? ??????? out.println("hello ,servlet 3 ");?
??? }?
}
???? 4 有一点注意的是:
?????? 在tomcat配置中, sever locations那一栏,默认是选中第一个的,在7中我们需要选中第2个,并且把Deploy path 改为 你安装的tomcat7目录下webapps
???? 好了,接下来启动,在地址栏输入http://locahost:8080/test 即可出现"hello ,servlet 3 "。
?
??? 5 在配置过程中,遇到的问题还是蛮多的,不过带着解决的思想怎么也要解决它,这篇文章有些小细节都省略掉了,大家都知道的地方,还望了解的人多来不吝指教,大家共同学习。
?