Servlet小例子
Servlet的主要作用是处理WEB服务器发送过来的请求信息(request),并且把响应结果返回给WEB服务器(response)。
Servlet的这个功能是靠Servlet引擎(Servlet容器)完成的。servlet小程序也因此需要放在Servlet容器中才能运行。
因此常说Tomcat服务器既是WEB服务器又是Servlet容器。
?
servlet程序代码:TestServlet.java
package com.vmn;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;//Servlet程序public class TestServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response){try{response.setContentType("text/html;charset=gb2312");//设置字符集//response.setCharacterEncoding("gb2312");PrintWriter pw = response.getWriter();pw.print("<html>");pw.print("<form action=logincl method=post>");pw.print("用户名:<input type=text name=username><br>");pw.print("密 码:<input type=password name=password><br>");pw.print("<input type=submit value=提交>");pw.print("</form>");pw.print("</html>");}catch(Exception e){e.printStackTrace();}}public void doPost(HttpServletRequest request,HttpServletResponse response){doGet(request,response);}}?
此类通过重写javax.servlet.HttpServlet类来实现自己的servlet。
12、13行设置响应给客户端的字符编码。否则页面上显示中文时会出现乱码。?
?
?web.xml
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet><servlet-name>myservlet</servlet-name><servlet-class>com.vmn.TestServlet</servlet-class></servlet><servlet-mapping><servlet-name>myservlet</servlet-name><url-pattern>/ts</url-pattern></servlet-mapping></web-app>
第6行声明了一个servlet,标签使用<servlet>。
第11行声明了servlet的映射,标签使用<servlet-mapping>。
?第7行定义了此servlet的名字为myservlet,第12行的名字需要跟第7行相同,这样就映射过来了。
?第13行定义了访问路径为"/ts"时,请求就会传到myservlet这个servlet。
?第8行定义了这个servlet的实现类:com.vmn.TestServlet。这样请求就会被发送到这个servlet类中。
?
相关API:
?
当提交到logincl这个servlet的时候,在logincl这个servlet中可以通过
request.getParametter("username"); 可以获得myservlet中的属性username的属性值。
?
response.sendRedirect("welcome?username=zhangsan&password=123456");
通过这句话可以把响应返回到welcome这个servlet,并且把参数username和password这两个属性分别赋值zhangsan和123456
注:请求的路径后要用"?"分隔,当需要传多个参数时需要用"&"作为分隔符。
?
request.setCharacterEncoding("gbk");
当request传递中文字符的时候,需要上面这句话设置字符集参数
?
request.getRemoteHost();//获得客户端的IP
request.getServletPath();//获得请求的servlet路径
?