JavaWeb-Servlet编程 Part3

来源:互联网 发布:mac算pc机吗 编辑:程序博客网 时间:2024/06/07 09:13

Servlet配置


一、<servlet>元素的各个子元素的含义说明

  • <servlet>元素的各个子元素的含义说明
  • <description>:为Servlet指定文本描述
  • <display-name>:为Servlet指定一个简短的名字,这个名字可以被某些工具所显示
  • <icon>:为Servlet指定一个图标。这个图标可以在图形界面工具中表示该Servlet。
  • <servlet-name>:指定servlet的名字,这个名字在同一个web应用中必须是唯一的。这个元素是必备的。
  • <servlet-class>:指定Servlet类的完整限定名。这个元素是必备的。
    <jsp-file>:指定在Web应用中的JSP文件的完整路径,该路径以“/”开始。如果要对一个JSP文件进行URL映射,才会用到这个元素。
  • <init-param>:定义servlet的初始化参数.如果使用了<init-param>元素,则必须在其中包含一个或多个<param-name>和- <param-value>元素,还可以包含零个或多个<description>元素。其中<description>初始化参数提供一个文本描述。<param-name>定义初始化参数的名字。
  • <load-on-startup>:指定当Web应用程序启动时,Servlet被加载的次序。
  • <run-as>:指定用于执行组件的角色。如果使用了<run-as>元素,可以包含零个或多个<description>元素,必须包含<role-name>元素。其中<description>指定一个文本描述。指定用于执行组件的角色名。
  • <security-role-ref>:声明在组件或部署的组件的代码中的安全角色引用。如果使用了<security-role-ref>元素,则必须包含<role-name>元素,可以包含零个或多个<description>元素,零个或一个<role-link>元素。其中,<description>为安全角色引用提供一个文本描述。指定在代码中使用的安全角色的名字。<role-link>指定到一个安全角色的引用。

二、<servlet-mapping>元素及其子元素
<servlet-mapping>元素在servlet和URL路径之间定义了一个映射.它包含了2个子元素<servlet-name><url-patten><servlet-name>元素给出的Servlet名字必须是在<servlet>元素中声明过的Servlet的名字。<url-patten>元素指定对应rservlet的URL路径,该路径是相对于web应用上下文的路径。
<url-patten>元素中,可以使用下面的语法来定义映射路径。
1) 以“/”开始并且以“/*”结束的字符串用来映射路径

<url-patten>/admin/*</url-patten>

表示对/admin/路径下的所有资源的请求都将由映射了上述URL路径的Servlet来处理。
2) 以“*.”为前缀的字符串用来映射扩展名

<url-patten>*.html</url-patten>

表示对具有.html扩展名的资源的请求都将由映射了上述URL路径的Servlet来处理。
3)以一个单独的“/”指示这个web应用默认的servlet

<url-patten>/</url-patten>

表示如果对某个请求没有找到匹配的Servlet,那么将使用Web应用程序的默认Servlet来处理。

三、配置自启动的servlet
1.创建java类UserList,来获取所有用户信息,并生产Html页面中元素

package com.demo.servlet;import java.sql.*;import java.util.*;public class UserList {    private static Map userMap;    public static void fillUser()    {        //判断Map对象是否存在,若存在则清除里面的数据,不存在则创建一个新的        if(userMap == null) {            //如果不存在,则创建新的HashMap对象            userMap = new HashMap();        } else {            //如果存在,则清空HashMap对象            userMap.clear();        }        //声明数据库连接对象        Connection conn = null;        //创建要构造下拉列表的字符缓冲区对象        StringBuffer strBuf = new StringBuffer();        try{            //建立数据库连接            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");            conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=UserInfo",                     "sa", "Aa123789");            PreparedStatement pState = conn.prepareStatement("Select * from userInfo");            ResultSet rs = pState.executeQuery();            while(rs.next()){                userMap.put(new Integer(rs.getInt(1)), rs.getString(2));            }        }        catch(Exception ex){            ex.printStackTrace();        }finally{            try{                if(conn != null){                    conn.close();                    conn = null;                }            }catch(SQLException se){                se.printStackTrace();            }        }    }    public static String getUserListHTML(){        StringBuilder sb = new StringBuilder();        Set set = userMap.keySet();        Iterator iter = set.iterator();        while(iter.hasNext()) {            Object item = iter.next();            sb.append("<option value='"+ item +">" + userMap.get(item) + "</option>\n");        }        return sb.toString();    }}

2.创建Servlet类UserCacheServlet

package com.demo.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sun.print.PrinterJobWrapper;@WebServlet("/UserCacheServlet")public class UserCacheServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";    public void init() throws ServletException{        UserList.fillUser();    }     public UserCacheServlet() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        UserList.fillUser();        response.setContentType(CONTENT_TYPE);        PrintWriter out = response.getWriter();        out.println("<html>");        out.println("<head><title>User Cache Servlet</title></head>");        out.println("<body bgcolor=\"#FFFFFF\">");        out.println("登录成功!");        out.println("</body>");        out.println("</html>");        out.flush();        out.close();    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

3.配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>LoginServlet</display-name>   <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <servlet>    <!-- 设置Servlet的名称 -->    <servlet-name>UserCacheServlet</servlet-name>    <!-- 设置Servlet的完整类名 -->    <servlet-class>com.demo.servlet.UserCacheServlet</servlet-class>    <!-- 设置Servlet自启动加载运行 -->    <load-on-startup>2</load-on-startup>  </servlet>  <!-- 设置Servlet映射信息 -->  <servlet-mapping>  <!-- 设置Servlet的名称 -->    <servlet-name>UserCacheServlet</servlet-name>  <!-- 设置Servlet的映射URL路径 -->    <url-pattern>/servlet/UserCacheServlet</url-pattern>  </servlet-mapping></web-app>

4.创建login.jsp登录页面

<%@page import="com.demo.servlet.UserList"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login</title></head><body bgcolor="000000">    <form name="form1" method="post" action="servlet/UserCacheServlet">        <table>            <tr><td>            用户名:</td><td>            <select name="userID">                <option value="" selected>                -- 登录用户 --                </option>                <%=UserList.getUserListHTML() %>            </select>            </td></tr>            <tr><td>密码:</td><td><input type="password" name="password"></td></tr>            <tr><td colspan="1"><input type="submit" name="submit" value="登录"></td></tr>        </table>    </form></body></html>
原创粉丝点击