初步集成serverlet

来源:互联网 发布:2016淘宝购物节有哪些 编辑:程序博客网 时间:2024/05/22 12:45
 

在tomcat下运行servlet,需要在web.xml文件中对servlet进行配置,下面用一个具体的例子一步一步来看一下整个过程。

1:首先创建一个web应用程序,这里我是用Eclipse建的,就叫web吧,存放路径C:/eclipse/workspace/web

2:tomcat中,添加conf下的server.xml中的<Context >标记

<Context path="/web" reloadable="true" docBase="C:/Eclipse/workspace/web"/>

3:编写一个名为ServletTest的servlet程序,具体内容如下,应该很简单的,就不多解释:

package test;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletTest extends HttpServlet{
 protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
  doPost(arg0,arg1);
 }
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  ServletOutputStream out=response.getOutputStream();
  out.println("<html>");
  out.println("<body>");
  out.println("TEST");
  out.println("</body>");
  out.println("</html>"); 
 }

}

4:将servlet编译后生成的class文件放到WEB-INF的class目录下,因为我这里带了个test包,所以生成的文件路径就是WEB-INF----->class----->test------>ServletTest.class

5:配置web.xml文件,在web应用程序的WEB-INF目录下,新建一个如下内容的web.xml文件

<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <servlet>
  <servlet-name>ServletTest</servlet-name>
  <servlet-class>test.ServletTest</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>ServletTest</servlet-name>
  <url-pattern>/ServletTest</url-pattern>  
 </servlet-mapping>
</web-app>

这里解释一下这个文件的内容:

<servlet-name>标签指定了servlet的名字,主要是下面的<servlet-mapping>用;

<servlet-class>说明了servlet存放的class目录下的位置,这里要加上必要的包名;

<servlet-mapping>标签中,<servlet-name>指出要要匹配的servlet的名字,这个与上边的<servlet>标签中定义的名字对应;<url-pattern>指出了当满足什么条件时,调用这个servlet;这里写的是/ServletTest

6:启动tomcat,并在浏览器中输入http://localhost:8090/web/ServletTest

则浏览器输出TEST

这里主要想说的就是<url-pattern>,这个标签指定了servlet的匹配类型,当写成 <url-pattern>/*</url-pattern>时,浏览器中输入http://localhost:8090/web/1111或者http://localhost:8090/web/2222,都会执行这个servlet
也就是在这个地方可以用一些通配符表示。

**********************************************************

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 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">
    <display-name>
    test</display-name>
    <welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list>

     <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>CheckAccount</servlet-name>
       <servlet-class>com.ht.servlet.CheckAccount</servlet-class>
     </servlet>

     <!--  servlet>
         <servlet-name>EmailControl</servlet-name>
         <servlet-class>com.ht.servlet.SendMailServlet</servlet-class>
     </servlet>

     <servlet-mapping>
         <servlet-name>EmailControl</servlet-name>
         <url-pattern>/emailto</url-pattern>
     </servlet-mapping-->
    
<servlet>
  <servlet-name>ServletTest</servlet-name>
  <servlet-class>com.ht.servlet.ServletTest</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>ServletTest</servlet-name>
  <url-pattern>/ServletTest</url-pattern> 
 </servlet-mapping>     

     <servlet-mapping>
       <servlet-name>CheckAccount</servlet-name>
       <url-pattern>/login</url-pattern>
     </servlet-mapping>   
</web-app>
*****************************************************

session.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<body>
<%
            com.ht.servlet.AcountBean account = (com.ht.servlet.AcountBean) session
            .getAttribute("account");
%>
username:
<%=account.getUsername()%>
<br>
password:
<%=account.getPassword()%>
</body>
<!--
编写fail.jsp文件 失败后跳转

<body>
Logon Failed
<br>
</body>
 -->

*****************************************

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<body>
      <form action="login">
      username:<input type="text" name="username"><br>
      password:<input type="password" name="pwd"><br>
      <input type="submit">
      </form>
     </body>

******************************************

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<head>编写fail.jsp文件 失败后跳转 </head>
<body>
Logon Failed
<br>
</body>

*****************************************************

package com.ht.servlet;

public class AcountBean {
    private String username="";
    private String password="";
    public String getPassword() {
         return password;
    }
    public void setPassword(String password) {
         this.password = password;
    }
    public String getUsername() {
         return username;
    }
    public void setUsername(String username) {
         this.username = username;
    }

    }

*************************************************

package com.ht.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.*;

public class CheckAccount extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
     HttpSession session = request.getSession();
     AcountBean account = new AcountBean();
     String username = request.getParameter("username");
     String pwd = request.getParameter("pwd");
     account.setUsername(username);
     account.setPassword(pwd);
     if ((username != null) && (username.trim().equals("jsp"))) {
      if ((pwd != null) && (pwd.trim().equals("1"))) {
       System.out.println("session");
       session.setAttribute("account", account);
       String logon_suc = "session.jsp";
       response.sendRedirect(logon_suc);
       return;
      }
     }
     String logon_fail = "fail.jsp";
     response.sendRedirect(logon_fail);
     return;
}

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

     doGet(request, response);
}

}

原创粉丝点击