一、@WebServlet注解
假如输入小写的http://localhost:8088/HelloWorld/helloWorld,会出现错误的页面,如下图,这里可能会有疑问:为什么输入大写的就显示正常而输入小写的就报错呢?而且也没有和上一篇博客写的在web.xml中配置ServletName等这些参数也能运行。这是什么原因呢?
其实这主要是@WebServlet注解在起作用。Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程。开发Servlet3的程序需要一定的环境支持。Servlet3是Java EE6规范的一部分,MyEclipse10和Tomcat7都提供了对Java EE6规范的支持。Tomcat需要Tomcat7才支持Java EE6,Tomcat7需要使用JDK6。关于注解以后有机会会专门写一博客来研究它,这里主要是@WebServlet注解的使用。
使用@WebServlet将一个继承于javax.servlet.http.HttpServlet的类定义为Servlet组件。
@WebServlet有很多的属性:
asyncSupported:声明Servlet是否支持异步操作模式。
description:Servlet的描述。
displayName:Servlet的显示名称。
initParams:Servlet的init参数。
name:Servlet的名称。
urlPatterns: Servlet的访问URL。
value: Servlet的访问URL。
Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。
这里我们对代码稍作修改就可以实现大小写都支持
/*@WebServlet("/HelloWorld")*/
@WebServlet(name = "HelloWorld", urlPatterns = {
"/helloWorld","/HelloWorld"})
public class HelloWorld extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
out.println("<html>");
out.println("<head>");
out.println("<title>HelloWorld</title>");
out.println("</head>");
out.println("<body>");
out.println("<h2>HelloWorld</h2>");
out.println("</body>");
out.println("</html>");
}
finally
{
out.close();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
二、参数配置
1.Servlet的参数配置
上面使用@WebServlet注解来实现映射,不过要Servlet3.0以后才支持,在web.xml中配置是一比较常见的方式。还是以HelloWrold项目为demo,在web.xml中进行如下配置,也能达到@WebServlet注解的效果。配置在xml中的参数修改只需要重启下服务器就好,不用再修改Servlet类。
<servlet>
<servlet-name>HelloWorld</servlet-name>