首页 > 代码库 > servlet开篇
servlet开篇
今天在看关于servlet的知识,像java程序都继承了object类一样。servlet程序都是servlet的子类,意思是。全部servlet程序都要继承于servlet(可继承的类有:GenericServlet,HttpServlet)。
在我写第一个servlet程序时,居然不用写web.xml文件。仅仅是在类的外面写了以下的一句话:
@WebServlet(name="servletname",urlPttern={“/servletReaplace”});
这是为什么呢?一開始我百思不得其解,在网上无意中看到一篇文章为我解开了困惑。
Tomcat 7之无需JDK仅仅需JRE与无需web.xm及J2SE 6.0之真实与谎言?当然首先是确定一下,是真实的,吃个定心丸先,不是谎言:) 。 只是话说回来,仅是配置 JRE_HOME 的情况比較少。都是设置过 JAVA_HOME 变量,然后 JRE_HOME 自己挂之,然后 PATH 里加上个 .;%JAVA_HOME%\bin 之类的。。。 仅仅只是 Tomcat 5.0 时候还是须要 JDK 1.3 才干够执行的。 [Loaded java.io.IOException from shared objects file] 实际上,启动脚本先会认 JAVA_HOME 变量,在找到 JAVA_HOME 的情况下,会将 JAVA_HOME 赋值给 JRE_HOME,假设有定义 JRE_HOME 变量的话。则 JRE_HOME 变量是最优先的。比方。你定义 JAVA_HOME=D:\JDK\1.6.0 是执行不起来的。 <role rolename="manager-gui"/> 为此。你须要设置不同的角色处理不同的管理内容,详细例如以下: http://localhost:8080/manager/status 測试一下无需web.xml配置文件来创建一个Web应用程序项目 Tomcat7 @WebServlet("/AnnotationServlet") public class AnnotationServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { PrintWriter out = response.getWriter(); out.println("Annotation Servlet in Tomcat 7"); } }假设你用JDK 1.5来编译则会出错 javac -cp D:\OpenSource\Tomcat\7.0.0-RC4\lib\servlet-api.jar *.java http://localhost:8080/Tomcat7/AnnotationServlet 当然一个Web项目,少了web.xml文件预计也是玩不转的,试一下通过注解与没有注解的Servlet共同工作的场景,创建一个 NoneAnnotationServlet.java <? 编译、部署后,都能够正常工作。 蒽哪。非常和谐的说。Tomcat还有非常多新的Servlet 3.0与Java EE 6规范的特性,慢慢測试之。 框中的内容出自:http://www.oschina.net/question/12_9194 |
在刚開始照着书中的样例写时,因为书中的样例没有继承GenericServlet或HttpServlet。所以一直执行不起来,不完整的程序例如以下:
<pre name="code" class="java">package self.servlet.a; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.GenericServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; //declaring a Servlet application with //@WebServlet(name = "MyServlet",urlPatterns={"/my"}) @WebServlet(name="MyServlet",urlPatterns = {"/my"}) public class MyServlet { /** * */ private static final long serialVersionUID = 1L; //declaring variable transient ServletConfig servletConfig; public void init(ServletConfig servletConfig) throws ServletException { this.servletConfig = servletConfig; } public ServletConfig getServletConfig(){ return this.servletConfig; } public String getServletInfo(){ return "MyServlet!"; } public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException { String servletName = this.servletConfig.getServletName(); response.setContentType("text/html"); PrintWriter write = response.getWriter(); write.print("<html><head></head>"+"<body>Hello,"+servletName+"</body>"+"</html>"); } public void destroy(){ } }
<span style="font-size:18px;">执行时,程序一直报<span style="color:#ff0000;">Http:404错误。</span></span>
</pre><pre name="code" class="java"><span style="font-size:18px;">直到把MyServlet写上继承类:GenericServlet,才干够执行成功。</span>
</pre><pre name="code" class="java"><span style="font-size:18px;">这就是开头在说的:<span style="color:#333300;">全部servlet程序都是Servlet的子类。敲代码时,都要写上继承了某个Servlet父类。</span></span>
servlet开篇