wel.xml里面有两段关于AdminServlet的:
  <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>AdminServlet</servlet-name>
    <servlet-class>com.action.AdminServlet</servlet-class>
  </servlet>  <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/Admin.shtml</url-pattern>
  </servlet-mapping>AdminServlet是这么写的:package com.action;
/**
 * 管理员登陆 增加 修改 删除 删除登陆日志
 */
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.bean.AdminBean;
import com.bean.SystemBean;
import com.util.Constant;
import com.util.MD5;public class AdminServlet extends HttpServlet { /**
 * Constructor of the object.
 */
public AdminServlet() {
super();
} /**
 * Destruction of the servlet. <br>
 */
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
 * The doGet method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} /**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
try{
String method=request.getParameter("method").trim();
AdminBean loginbean = new AdminBean();
HttpSession session = request.getSession();
session.setMaxInactiveInterval(1200);
SystemBean systembean = new SystemBean();
String sysdir = systembean.getDir();
if(method.equals("one")){//admin登录
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username == null||username.trim().equals("")){
request.setAttribute("message", "请正确输入用户名!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
}
else if(password == null||password.trim().equals("")){
request.setAttribute("message", "请输入密码!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
}
else{
String md5password = MD5.MD5(password);
String agent = request.getHeader("user-agent"); 
StringTokenizer st = new StringTokenizer(agent,";"); 
String useros=st.nextToken();
String loginip = request.getRemoteAddr();
int flag = loginbean.adminLogin(username,md5password, password,useros,loginip);
switch (flag){
case Constant.NAME_ERROR:
request.setAttribute("message", "用户名错误!请确认管理权限!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
break;
case Constant.PASSWORD_ERROR:
request.setAttribute("message", "密码错误,请确认管理权限!");
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
break;
}
}
}
else if(method.equals("editpwd")){//admin edit password
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String oldpwd = MD5.MD5(request.getParameter("oldpwd").trim());
String newpwd = MD5.MD5(request.getParameter("newpwd").trim());
String username = (String)session.getAttribute("user");
int flag = loginbean.editPassword(username, oldpwd, newpwd);
switch (flag){
case Constant.SUCCESS:
request.setAttribute("message", "密码修改成功!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
case Constant.PASSWORD_ERROR:
request.setAttribute("message", "原始密码错误,请确认权限!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
case Constant.SYSTEM_ERROR:
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/editpwd.jsp").forward(request, response);
break;
}
}
}
else if(method.equals("exit")){//admin exit
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
session.removeAttribute("user");
session.removeAttribute("list");
System.gc();
request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
}
}
else if(method.equals("manager")){//add,update manager
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String ra = request.getParameter("ra").trim();
if(ra.equals("add")){
String username = request.getParameter("username").trim();
String password = MD5.MD5(request.getParameter("password").trim());
String isuse = request.getParameter("isuse").trim();
if(isuse.equals("在用"))
isuse = "1";
else
isuse = "2";
int flag = loginbean.addManager(username, password, "2", isuse);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "增加管理员成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else if(flag == Constant.SAME_NAME){
request.setAttribute("username", username);
request.setAttribute("message", "该用户名已经存在!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
else if(ra.equals("update")){
String username = request.getParameter("username").trim();
String password = request.getParameter("password").trim();
String isuse = request.getParameter("isuse").trim();
if(!password.equals("")){
password = MD5.MD5(password);
}
if(isuse.equals("在用"))
isuse = "1";
else
isuse = "2";
int flag = loginbean.updateManager(username, password, "2", isuse);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "修改管理员信息成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
}
}
else if(method.equals("delm")){//delete manager
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
int id = Integer.parseInt(request.getParameter("id").trim());
if(id == 1){
request.setAttribute("message", "不能删除原始帐号!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
int flag = loginbean.delManager(id);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "删除成功!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/user.jsp").forward(request, response);
}
}
}
}
else if(method.equals("dellog")){//delete login note
String username2 = (String)session.getAttribute("user");
if(username2 == null){
request.getRequestDispatcher("error.jsp").forward(request, response);
}
else{
String check[] = request.getParameterValues("checkit");
if(check == null){
request.setAttribute("message", "请选择要删除的记录!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
else{
int id[]= new int[check.length];
for(int i = 0;i<check.length;i++){
int s = Integer.parseInt(check[i]);
id[i] = s;
}
int flag = loginbean.delLog(id);
if(flag == Constant.SUCCESS){
request.setAttribute("message", "删除记录成功!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
else{
request.setAttribute("message", "系统维护中,请稍后再试!");
request.getRequestDispatcher(sysdir+"/system/log.jsp").forward(request, response);
}
}
}
}
else{//无参数传入转到错误页面
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}catch(Exception e){
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
} /**
 * Initialization of the servlet. <br>
 *
 * @throws ServletException if an error occure
 */
public void init() throws ServletException {
// Put your code here
}}
我的问题是,为什么会停在了/Admin.shtml上面?这是为什么?JSPweb.xmlServlet/Admin.shtml

解决方案 »

  1.   

    我确定已经跳转到了/Admin.shtml,但是却停在了当前页面中,账号密码也是正确的!
    根据断点的调试,代码走了这里:if(method.equals("one")){//admin登录
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    if(username == null||username.trim().equals("")){
    request.setAttribute("message", "请正确输入用户名!");
    request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
    }
    else if(password == null||password.trim().equals("")){
    request.setAttribute("message", "请输入密码!");
    request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
    }
    else{
    String md5password = MD5.MD5(password);
    String agent = request.getHeader("user-agent"); 
    StringTokenizer st = new StringTokenizer(agent,";"); 
    String useros=st.nextToken();
    String loginip = request.getRemoteAddr();
    int flag = loginbean.adminLogin(username,md5password, password,useros,loginip);
    switch (flag){
    case Constant.NAME_ERROR:
    request.setAttribute("message", "用户名错误!请确认管理权限!");
    request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
    break;
    case Constant.PASSWORD_ERROR:
    request.setAttribute("message", "密码错误,请确认管理权限!");
    request.getRequestDispatcher(sysdir+"/login.jsp").forward(request, response);
    break;
    }
    }
    }
      

  2.   

    匹配 <url-pattern>/Admin.shtml</url-pattern>就跳转了
      

  3.   

    怎么匹配?在web.xml不是已经写了么?
      

  4.   

     <servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
        <url-pattern>/Admin.shtml</url-pattern>
      </servlet-mapping>这个好像不是用的AdminServlet去匹配/Admin.shtml么?
      

  5.   

    好好看看url-pattern匹配规则。有扩展名的,直接去掉.扩展名映射
      

  6.   

    10-25万,急招赴日java工程师和项目经理,日语一级,去东京或大阪。详情QQ:1992648885
      

  7.   

    我不是太懂啊, 去掉扩展名之后是不是应该是这样:<servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
        <url-pattern>/Admin</url-pattern>
      </servlet-mapping>
      

  8.   

    tomcat默认不会操作shtml的,建议取消server.xml配置文件的注释
      

  9.   

    啥意思?server.xml?记错了,是tomcat/conf/web.xml里面,把shtml相关的注释取消了。看看这篇文章你会明白的:http://blog.tianya.cn/blogger/post_read.asp?BlogID=666817&PostID=8788268
      

  10.   

    啥意思?server.xml?记错了,是tomcat/conf/web.xml里面,把shtml相关的注释取消了。看看这篇文章你会明白的:http://blog.tianya.cn/blogger/post_read.asp?BlogID=666817&PostID=8788268

    我必须是要用shtml的,但是我设置了tomcat 还是不行 啥情况。。
      

  11.   

    不是已经执行到AdminServlet里面了吗? 这跟web.xml的url没什么关系了, 说明路径是正确, 不然她怎么能到servlet呢!    确保没有缓存, 然后用断点在跟踪下。/