servlet配置web.xml问题
解决问题:webapp里有个@WebServlet然后在web.xml里没有自动生成servlet的配置
原因:
Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,举例来说说
1
|
@WebServlet ( "/login" ) |
这句写到LoginServlet.java的类名声明前,就相当于以前Servlet 2.5之前的web.xml里的:
1
2
3
4
5
6
7
8
|
< servlet > < servlet-name >LoginServlet</ servlet-name > < servlet-class >servlets.LoginServlet</ servlet-class > </ servlet > < servlet-mapping > < servlet-name >LoginServlet</ servlet-name > < url-pattern >/login</ url-pattern > </ servlet-mapping > |
这么一大段了,也就是说只需说明url-pattern就可以了,其他的隐含内容注解会自动帮你判断出来,是不是很方便。当然Servlet 3.0还是支持用老的web.xml配置的,你还可以继续按照视频里教的老做法。
使用@WebServlet将一个继承于javax.servlet.http.HttpServlet的类定义为Servlet组件。
@WebServlet有很多的属性:
1、asyncSupported: 声明Servlet是否支持异步操作模式。
2、description: Servlet的描述。
3、displayName: Servlet的显示名称。
4、initParams: Servlet的init参数。
5、name: Servlet的名称。
6、urlPatterns: Servlet的访问URL。
7、value: Servlet的访问URL。
Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
也定义多个URL访问:
如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})
至于“还有为什么eclipse新建的webapp项目classes文件都在build文件夹下,而不是像视频教程那样在web-inf里的classes文件夹里?”
这只是eclipse在build这个步骤做的中间工作而已,最后发布时,按照Java EE标准,一定会发布到web-inf里的classes文件夹里,不信你发布后再到个目录里看一下。
最后问题:“我要新建一个javabean在哪里建”,javabean也是一个Java类而已,你只需要New-->Class就行了,建好后,建立私有属性后,生成getter/setter方法,可以点右键source-->generate getters/setters自动生成,比较方便。