一些Servlet的东东:HttpServlet、GenericServlet、Servlet、RequestDispatcher 、getInitParameter、getInitParameterNames、Filter

 

§           

§   实验支持环境设备需求

§          软件支持工具

Java开发工具

Eclipse SDK         Version: 3.2.2         Build id: M20070212-1330

J2EE开发工具

MyEclipse           Version: 5.1.1 GA

JAVA运行环境工具

JDK(java)           Version: 1.5.0_09

Java(TM) 2 Runtime Environment(JRE)

Version: build 1.5.0   Standard Edition

Java HotSpot(TM) Client VM

Version: build 1.5.0_09-b03

mixed mode)

    JSP容器

    Tomcat              Version: 5.5.25        apache-tomcat-5.5.25

§   实验步骤

  • 创建一个ServletMyServlet.java

1File->New->Servlet,Config package pathorg.luonix.servlets and Servlet Name:MyServlet,then next->finished.

注意:Servlet MyServlet必须继承HttpServlet类(或继承抽象类GenericServlet或扩展接口Servlet

2)配置web.xml文件

<servlet>

      <description>

This is the description of my J2EE component

</description>

      <display-name>

This is the display name of my J2EE component

</display-name>

      <servlet-name>MyServlet</servlet-name>

      <servlet-class>org.luonix.servlets.MyServlet</servlet-class>

</servlet>

 

<servlet-mapping>

       <servlet-name>MyServlet</servlet-name>

       <url-pattern>/servlet/MyServlet</url-pattern>

</servlet-mapping>

   3)根据客户端的请求方式实现doXXX(HttpServletRequest request, HttpServletResponse response)service(HttpServletRequest request, HttpServletResponse response)方法。

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

     response.setContentType("text/html");

     PrintWriter out = response.getWriter();

     out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");

     out.println("<HTML>");

     out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

     out.println("  <BODY>");

     out.print("    This is ");

     out.print(this.getClass());

     out.println(", using the GET method");

     out.println("Hello World");

     out.println("  </BODY>");

     out.println("</HTML>");

     out.flush();

     out.close();

}

   4)部署WEB工程到TOMCAT服务器中

   5)运行测试

   打开浏览器,输入http://127.0.0.1:8080/j2ee-exp/servlet/MyServlet

   This is class org.luonix.servlets.MyServlet, using the GET method Hello World

   6)在配置文件中添加初始化参数

   <init-param>

      <param-name>name</param-name>

      <param-value>罗小勇</param-value>

   </init-param>

   <init-param>

      <param-name>englishname</param-name>

      <param-value>Xiaoyong Luo</param-value>

   </init-param>

   <init-param>

      <param-name>sex</param-name>

      <param-value>male</param-value>

   </init-param>

   <init-param>

      <param-name>age</param-name>

      <param-value>22</param-value>

   </init-param>

7)显示配置参数

修改doGet(HttpServletRequest request, HttpServletResponse response)如下:

response.setCharacterEncoding("UTF-8");

out.println("this is my profile:");

out.println(this.getServletConfig().getInitParameter("name"));

out.println(this.getServletConfig().getInitParameter("englishname"));

out.println(this.getServletConfig().getInitParameter("sex"));

out.println(this.getServletConfig().getInitParameter("age"));

java.util.Enumeration params = this.getServletConfig().getInitParameterNames();

for(;params.hasMoreElements();){

out.println(this.getServletConfig().getInitParameter(params.nextElement().toString()));

}

8)部署WEB工程到TOMCAT服务器中,运行测试

打开浏览器,输入http://127.0.0.1:8080/j2ee-exp/servlet/MyServlet

This is class org.luonix.servlets.MyServlet, using the GET method Hello World this is my profile: 罗小勇 Xiaoyong Luo male 22 male 22 Xiaoyong Luo 罗小勇

  • 基于以上例子,使用Form提交两项数据:用户名和密码。编写一个Servlet进行用户名的划分:当用户名中只出现azAZ09这样的字母时,Servlet指派到JSP英文页面显示欢迎信息;其余情况指派到中文JSP页面。

1)  修改Servlet MyServlet.java,添加如下内容:

out.println("<form action=/"" + request.getContextPath() + "/filter/MyFilter/" method=/"post/">");

       out.println("<table align=/"center/">");

       out.println("<tr>");

       out.println("<td align=/"center/">");

       out.println("account:</td>");

       out.println("<td align=/"left/"><input type=/"text/" name=/"account/"/></td>");

       out.println("</tr>");

      

       out.println("<tr>");

       out.println("<td align=/"center/">");

       out.println("password:</td>");

       out.println("<td align=/"left/"><input type=/"password/" name=/"password/"/></td>");

       out.println("</tr>");

      

       out.println("<tr>");

       out.println("<td align=/"center/">");

       out.println("<input type=/"submit/" value=/"submit/"></td>");

       out.println("<td align=/"center/"><input type=/"reset/" value=/"reset/"/></td>");

       out.println("</tr>");

      

       out.println("</table>");

    out.println("</form>");

创建一个Servlet Filter:MyFilter,MyFilter.java实现过滤功能,用于判断是否只出现azAZ09这样的字母,其中doFilter(ServletRequest request, ServletResponse response,FilterChain filterchain)实现如下:

this.account = request.getParameter("account");

       this.password = request.getParameter("password");

       javax.servlet.RequestDispatcher dispatcher = null;

       boolean isEN = true;

       for(int i=0; i<this.account.length(); i++){

           if(!(this.account.charAt(i) >= '0' && this.account.charAt(i) <= '9' ||

                this.account.charAt(i) >= 'a' && this.account.charAt(i) <= 'z' ||

                this.account.charAt(i) >= 'A' && this.account.charAt(i) <= 'Z' ))

              isEN = false;

       }

       if(isEN)

           dispatcher = request.getRequestDispatcher("/servlet/EN");

       else

           dispatcher = request.getRequestDispatcher("/servlet/CN");

       dispatcher.forward(request, response);

   其中,下画线部分,通过javax.servlet.RequestDispatcher转发器转发,如果出现了中文等类似的字符,则转发到/servlet/CN所对应的Servlet中去,否则转发到/servlet/CN所对应的Servlet中去。

2)  Servlet CN.JAVA,EN.JAVA

分别对应于转发后的中文或英文页面。

3)  最终的WEB.xml配置如下:

<servlet>

<description>

This is the description of my J2EE component

</description>

<display-name>

This is the display name of my J2EE component

</display-name>

    <servlet-name>MyServlet</servlet-name>

    <servlet-class>org.luonix.servlets.MyServlet</servlet-class>

    <init-param>

      <param-name>name</param-name>

      <param-value>罗小勇</param-value>

    </init-param>

    <init-param>

      <param-name>englishname</param-name>

      <param-value>Xiaoyong Luo</param-value>

    </init-param>

    <init-param>

      <param-name>sex</param-name>

      <param-value>male</param-value>

    </init-param>

    <init-param>

      <param-name>age</param-name>

      <param-value>22</param-value>

    </init-param>

  </servlet>

  <servlet>

<description>

This is the description of my J2EE component

</description>

<display-name>

This is the display name of my J2EE component

</display-name>

    <servlet-name>CN</servlet-name>

    <servlet-class>org.luonix.servlets.CN</servlet-class>

  </servlet>

  <servlet>

<description>

This is the description of my J2EE component

</description>

<display-name>

This is the display name of my J2EE component

</display-name>

    <servlet-name>EN</servlet-name>

    <servlet-class>org.luonix.servlets.EN</servlet-class>

  </servlet>

  <filter>

    <description>my filter</description>

    <display-name>myfilter</display-name>

    <filter-name>myfilter</filter-name>

    <filter-class>org.luonix.servlets.MyFilter</filter-class>

  </filter>

  <servlet-mapping>

    <servlet-name>MyServlet</servlet-name>

    <url-pattern>/servlet/MyServlet</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>CN</servlet-name>

    <url-pattern>/servlet/CN</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>EN</servlet-name>

    <url-pattern>/servlet/EN</url-pattern>

  </servlet-mapping>

  <filter-mapping>

    <filter-name>myfilter</filter-name>

    <url-pattern>/filter/MyFilter</url-pattern>

  </filter-mapping>

§   最终运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值