##1.开发Servlethtml
###第一个servlet程序java
执行页面打印“hello world!”程序的功能。web
以后,在自定义的Servlet类中覆写HttpServlet里的doGet()方法,此方法定义以下:api
public void doGet(HttpServletRequest request , HttpServletResponse response)throws ServletExceptoin ,IOException { }
在导包的时候应该按照如下的顺序才称为标准:浏览器
范例:编译一个servlet服务器
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { public void doGet(HttpServletRequest request , HttpServletResponse response)throws ServletException ,IOException { PrintWriter out=response.getWriter(); out.println("<html>"); out.println("<head><title>Hello</title></head>"); out.println("<body>"); out.println("<center>"); out.println("<h1>Hello World!</h1>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); out.close(); } }
此servlet在用javac编译时,会出现有几个错误session
FirstServlet.java:3: 软件包 javax.servlet 不存在 import javax.servlet.ServletException; ^ FirstServlet.java:4: 软件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServlet; ^ FirstServlet.java:5: 软件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServletRequest; ^ FirstServlet.java:6: 软件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServletResponse; ^ FirstServlet.java:8: 找不到符号 符号: 类 HttpServlet public class FirstServlet extends HttpServlet ^ FirstServlet.java:10: 找不到符号 符号: 类 HttpServletRequest 位置: 类 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { ^ FirstServlet.java:10: 找不到符号 符号: 类 HttpServletResponse 位置: 类 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { ^ FirstServlet.java:10: 找不到符号 符号: 类 ServletException 位置: 类 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { 8 错误
以上的8个错误,都是针对于Servlet程序包的,为何会有这样的问题那? 实际上以前在讲解JAVA基础的时候说过JAVA的三个分支:app
由于如今使用的是JAVA SE的编译环境,因此这些包确定不存在,则确定没法经过编译,既然没法经过,就要找到这些扩展的包,并将其设置到classpath之中,这样才可使用,那么这些包在哪里呢?jsp
分析:Tomcat的执行流程:.jsp > .java >.class 文件,能够发现,须要将一个.java编译成*.class,实际上编译出来的程序集已经很是相似于Servlet类,那么证实在Tomcat中可能就存在了这样的扩展包。servlet-api.jar文件post
能够把它放到D:\java\jre\ext目录下,此文件夹表示的是存放全部的扩展文件。
Servlet在web.xml文件中的配置
<servlet> <servlet-name>hello</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
通过以上配置以后,浏览器就能够经过/hello访问以前编写的内容HelloWorld程序。 从第一个程序中能够清楚的发现,一个Servlet程序除了须要编写类以外还必须对其进行映射的配置,以后浏览器经过映射路径找到一个Servlet程序。
一个Servlet程序能够同时配置多个名称
<servlet> <servlet-name>hello</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>hello2</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello2</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
##2.接受表单参数
既然在servlet中存在request对象,则能够利用request对象来接受参数。
405错误,没有方法支持。由于在以前编写的Servlet程序中,使用到是doGet()处理, 因此只能处理get请求,若是要想能够同时处理post提交,则要覆写doPost()方法。
##3.Servlet的生命周期
##4.取得session对象
HttpSession是其类型,若是在一个servlet中要取得此对象,则必须依靠request对象完成,在此接口中有以下两个方法: Public HttpSession getSession();表示直接取走当前的session Public HttpSession getSession(Boolean flag);取得session,若是session不存在,则建立,falg=true;
##5.取得application 对象
使用getServletContext()来代替application
ServletContext application = this.getServletContext();
##6.Servlet跳转
RequestDispatcher rd=request.getRequestDispatcher("tiao.jsp"); request.setAttribute("name","cs"); rd.forward(request, response);