在我看来servlet就是一个接口,他的父类是HttpServlet,而我们用servlet主要是重写servlet类中的doGet()和doPost()方法,而这两个方法的形参一样都有两个即HttpServletRequest类型的request参数和HttpServletResponse类型的reponse,网页前端发送一个request请求到相应的servlet中如果你是get()请求就交由doGet()方法来处理,post请求就交由doPost()来处理,servlet你可以创建多个所以你就可以处理不同页面的请求了。当然每当你写好了一个servlet或者修改了一个servlet之后你都必须在tomcat服务器上重新发布你的工程,才能正常访问。所以说一个servlet的完整过程就是四步:1.创建,2.编码,3.发布,4.访问,但这四步每一步都有需要注意的地方,下面一步步讲解:
一.创建
创建servlet之后,我们首先要知道如何用浏览器访问我们的servlet,这就要借助url,url=主机路径+项目名+servlet在项目中的路径。
MyEclipse会在WEB-INF下自动写出web.xml,这个文档中主要是记录你的servlet和其对应的在项目中的路径,如下:
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>servlet.loginservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginservlet</servlet-name>
<url-pattern>/servlet/loginservlet</url-pattern>
</servlet-mapping>
所以对于loginservlet这个servlet来说他的url就是localhost://8080/项目名/servlet/loginservlet,当然你在web.xml中改动你的servlet的<url-pattern>你访问的路径也会跟着改变,每次修改并保存web.xml都会让项目重新自动发布到服务器上,但是如果动了servlet的java代码就需要重新手动的发布在服务器上。
二.编码
servlet主要是和前端网页相连,在servlet中用PrintWriter类来写向前端输出的html等前端语言:
PrintWriter out=response .getWriter();
out.println("<body>");
out.println("</body>");
其次在编码时servlet获取请求参数是必须要了解的,这就需要了解HttpServletRequest接口下的getParameter(String name)方法,这里面的name举个例子就是在html中表单中的name。
中文乱码问题也是在编码中常见的问题,就像out.println("")中如果写的是中文就会在前端的页面引起乱码输出,原因就是没有正确的配置,这个时候就在PrintWriter out=response.getWriter()前加上response.setCharacterEncoding("gbk");就可以解决servlet输出乱码问题了。
servlet的请求转发,在处理浏览器请求时,经常需要多个servlet协作完成,如何将一个servlet转发到另一个servlet需要用到javax.servlet包下的RequestDispatcher接口,getRequestDispatcher(String path)方法返回一个RequestDispatcher对象,他的参数path指的就是要转发的servlet的url,这个方法只是获取到一个RequestDispatcher对象,并未实现真正的转发,要转发还需要用到RequestDispatcher对象的forword()方法,他的参数是request和response。
servlet的重定向,重定向可以分为两类,一是服务器间的页面跳转和跨服务器间的页面跳转,要实现重定向就需要用到HttpServletResponse对象的sendRedirect(String localtion)方法,当然这里面的localtion就是要跳转的path。