就好象我们输入tomcat 管理页面( http://127.0.0.1:8080/manager/html)时,tomcat 要求我们先输入用户及密码, 请问如何实现呢?  听说设置一下XML文件就可以.

解决方案 »

  1.   

    给你3种生成随即数的程序
    <%! String sVerifyCode; //验证码字符串  %> <%//设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);
    response.reset();try{
    // 将认证码存入SESSION
    //调用 runVerifyCode(int i) ,把i改成所要的验证码位数
    VerifyCode VC = new VerifyCode();
    session.setAttribute("VerifyCode",VC.runVerifyCode(4));
    //session.setMaxInactiveInterval(60);// 输出图象到页面
    sVerifyCode = (String)session.getAttribute("VerifyCode");
    OutputStream outs = response.getOutputStream();
    ImageIO.write(VC.CreateImage(sVerifyCode),"JPEG",outs);
    }catch(Exception e){
    return;
       }
    %>
    代码如下
    import java.awt.*;//导入类
    import java.awt.image.*;
    import java.util.*;
    import javax.imageio.*;
    public class VerifyCode {
    static Random r = new Random();
    static String ssource = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"  + "abcdefghijklmnopqrstuvwxyz" + "0123456789";
    static char[] src = ssource.toCharArray();
    //产生随机字符串private static String randString (int length){
    char[] buf = new char[length];
    int rnd;
    for(int i=0;i<length;i++){
    rnd = Math.abs(r.nextInt()) % src.length;buf[i] = src[rnd];
    }
    return new String(buf);
    }//调用该方法,产生随机字符串,
    //参数i: 为字符串的长度
    public String runVerifyCode(int i){
    String VerifyCode = randString(i);
    return VerifyCode;
    }
    //给定范围获得随机颜色
    public Color getRandColor(int fc,int bc)
    {
       Random random = new Random();
       if(fc>255) fc=255;
       if(bc>255) bc=255;
       int r=fc+random.nextInt(bc-fc);
       int g=fc+random.nextInt(bc-fc);
       int b=fc+random.nextInt(bc-fc);
       return new Color(r,g,b);
       }
      
      //调用该方法将得到的验证码生成图象
      //sCode:传递验证码 w:图象宽度 h:图象高度
      public BufferedImage CreateImage(String sCode)
      {
      try{
      //字符的字体
    Font CodeFont = new Font("Arial Black",Font.PLAIN,16);
    int iLength = sCode.length();//得到验证码长度
    int width=22*iLength, height=20;//图象宽度与高度
    int CharWidth = (int)(width-24)/iLength;//字符距左边宽度
    int CharHeight = 16;    //字符距上边高度// 在内存中创建图象
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);// 获取图形上下文
    Graphics g = image.getGraphics();//生成随机类
    Random random = new Random();// 设定背景色
    g.setColor(getRandColor(200,240));
    g.fillRect(0, 0, width, height);//设定字体
    g.setFont(CodeFont);//画随机颜色的边框
    g.setColor(getRandColor(10,50));
    g.drawRect(0,0,width-1,height-1);// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155;i++)
    {
      int x = random.nextInt(width);
      int y = random.nextInt(height);
      int xl = random.nextInt(12);
      int yl = random.nextInt(12);
      g.drawLine(x,y,x+xl,y+yl);
    }
    for (int i=0;i<iLength;i++)
    {
    String rand = sCode.substring(i,i+1); 
    // 将认证码显示到图象中
    g.setColor(new Color(20+random.nextInt(60),20+random.nextInt(120),20+random.nextInt(180)));
    g.drawString(rand,CharWidth*i+14,CharHeight);
    }
    // 图象生效
    g.dispose();
    return image;
    }catch(Exception e){
    //e.printStackTrace();
    //System.out.println(e.getMessage());
    }
    return null;
    }//测试
    public static void main(String[] args){
    //VerifyCode vc = new VerifyCode();
    //String s1 = vc.runVerifyCode(4);
    //Fun.DreamNewsTitle;System.out.println(s1);
    //Image im = vc.CreateImage(s1);
    //Graphics g = im.getGraphics();
    //g.drawImage(im,20,20,this);
    //g.drawString(s1,20,20);}
    }
      

  2.   

    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.ServletException;
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.util.Random;
    import java.io.IOException;/**
    * @author <a href="mailto:[email protected]">Jade Yuan</a>
    * @version 2006-3-9 18:34:36
    */
    public class ImageServlet extends HttpServlet {
        private static final String CONTENT_TYPE = "image/jpeg";
    //  private static final String [] FontNames={"SansSerif","Serif","MonoSpaced","Dialog","DialogInput"};    //Initialize global variables
        public void init() throws ServletException {
        }    //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(CONTENT_TYPE);
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);        // 在内存中创建图象
            int width = 60, height = 20;
            BufferedImage image = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);        // 获取图形上下文
            Graphics g = image.createGraphics();        //生成随机类
            Random random = new Random();        // 设定背景色
            g.setColor(getRandColor(200, 250));
            g.fillRect(0, 0, width, height);        //设定字体
            g.setFont(new Font("DialogInput", Font.ITALIC, 18));
            //    g.setFont(new Font(FontNames[random.nextInt(6)%5], Font.ITALIC, 18));
            //画边框
            //g.setColor(new Color());
            //g.drawRect(0,0,width-1,height-1);        // 随机产生255条干扰线,使图象中的认证码不易被其它程序探测到
            g.setColor(getRandColor(160, 200));
            for (int i = 0; i < 255; i++) {
                int x = random.nextInt(width);
                int y = random.nextInt(height);
                int xl = random.nextInt(12);
                int yl = random.nextInt(12);
                g.drawLine(x, y, x + xl, y + yl);
            }// 取随机产生的认证码(4位数字)
    //String rand = request.getParameter("rand");
    //rand = rand.substring(0,rand.indexOf("."));
            String sRand = "";
            for (int i = 0; i < 4; i++) {
                String rand = String.valueOf(random.nextInt(10));
                sRand += rand;
                // 将认证码显示到图象中
                g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110),
                        20 + random.nextInt(110))); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
                g.drawString(rand, 13 * i + 6, 16);
            }
            //System.out.println("validate code=" + sRand);        // 将认证码存入SESSION
            HttpSession session = request.getSession();
            session.setAttribute("rand", sRand);        // 图象生效
            g.dispose();        // 输出图象到页面
            ServletOutputStream outputstream = response.getOutputStream();
            ImageIO.write(image, "JPEG", outputstream);
        }    //Clean up resources
        public void destroy() {
        }    Color getRandColor(int fc, int bc) { //给定范围获得随机颜色
            Random random = new Random();
            if (fc > 255) {
                fc = 255;
            }
            if (bc > 255) {
                bc = 255;
            }
            int r = fc + random.nextInt(bc - fc);
            int g = fc + random.nextInt(bc - fc);
            int b = fc + random.nextInt(bc - fc);
            return new Color(r, g, b);
        }    public static void main(String[] args) {    }
    }
      

  3.   

    <%@ page contentType="image/jpeg" import="java.awt.*,
    java.awt.image.*,java.util.*,javax.imageio.*" %>
    <%!
    Color getRandColor(int fc,int bc){//给定范围获得随机颜色
            Random random = new Random();
            if(fc>255) fc=255;
            if(bc>255) bc=255;
            int r=fc+random.nextInt(bc-fc);
            int g=fc+random.nextInt(bc-fc);
            int b=fc+random.nextInt(bc-fc);
            return new Color(r,g,b);
            }
    %>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);// 在内存中创建图象
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取图形上下文
    Graphics g = image.getGraphics();//生成随机类
    Random random = new Random();// 设定背景色
    g.setColor(getRandColor(200,250));
    g.fillRect(0, 0, width, height);//设定字体
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));//画边框
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155;i++)
    {
     int x = random.nextInt(width);
     int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
     g.drawLine(x,y,x+xl,y+yl);
    }// 取随机产生的认证码(4位数字)
    String sRand="";
    for (int i=0;i<4;i++){
        String rand=String.valueOf(random.nextInt(10));
        sRand+=rand;
        // 将认证码显示到图象中
        g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
        g.drawString(rand,13*i+6,16);
    }// 将认证码存入SESSION
    session.setAttribute("rand",sRand);// 图象生效
    g.dispose();// 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());
    %>保存为images.jsp
    再在文件中调用就行了
    <input name=rand type=text value="" size="10" maxlength=4><img border=0 src="images.jsp">
    <%
    String rand = (String)session.getAttribute("rand");
    //在images.jsp里已经把rand存入SESSION了,这里调用就行
    String input = request.getParameter("rand");
    if (rand.equals(input))
    {
    //你想进行的操作

    else 
    {
    String pstr="<script language='javascript'>alert('验证码输入错误,请重新输入!');";
    pstr = pstr + "</script>";
    out.println(pstr);
    }
    %>
    这3中方法一种我写的两外两个是转载的
      

  4.   

    楼主是要的弹出一个对话框的 安全realm配置对吧    <security-constraint>
        <web-resource-collection>
          <web-resource-name>HTMLManger and Manager command</web-resource-name>
          <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
           <!-- NOTE:  This role is not present in the default users file -->
           <role-name>manager</role-name>
        </auth-constraint>
      </security-constraint>  <!-- Define the Login Configuration for this Application -->
      <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Tomcat Manager Application</realm-name>
      </login-config>  <!-- Security roles referenced by this web application -->
      <security-role>
        <description>
          The role that is required to log in to the Manager Application
        </description>
        <role-name>manager</role-name>
      </security-role>
      在你的web.xml里面加上这一段就可以了
     
    我是tomcat5.5 然后在conf/tomcat-users.xml 里面加上与上面一样的用户和角色就可以了
      

  5.   

    你照抄一下 tomcat自带的那个例子就可以了我刚刚也是从manager醒目下面考过来的
      

  6.   

    谢谢大家,特别是interpb(曾曾胡,深怕情多累美人!),我就是要弹出对话框.
      

  7.   

    用TOMCAT作为容器。我编写了TEST。JSP文件放在WEBAPPS目录下新建的MYAPP目录中(已经放置了WEB-INF目录以及。XML文件)。 为什么找不到TEST。JSP 文件。 提示是404错误
      

  8.   

    加个输入的表单啊  页面头部判断用户的session