为什么我的jsp跳转不正确?我已经设置好了web.xml

u010627130 2013-05-17 07:12:00
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上面?这是为什么?
...全文
310 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 12 楼 splendid_java 的回复:
[quote=引用 11 楼 u010627130 的回复:] [quote=引用 9 楼 splendid_java 的回复:] tomcat默认不会操作shtml的,建议取消server.xml配置文件的注释
啥意思?server.xml?[/quote]记错了,是tomcat/conf/web.xml里面,把shtml相关的注释取消了。看看这篇文章你会明白的:http://blog.tianya.cn/blogger/post_read.asp?BlogID=666817&PostID=8788268 [/quote] 我必须是要用shtml的,但是我设置了tomcat 还是不行 啥情况。。
ZHOU西口 2013-05-17
  • 打赏
  • 举报
回复
引用 11 楼 u010627130 的回复:
[quote=引用 9 楼 splendid_java 的回复:] tomcat默认不会操作shtml的,建议取消server.xml配置文件的注释
啥意思?server.xml?[/quote]记错了,是tomcat/conf/web.xml里面,把shtml相关的注释取消了。看看这篇文章你会明白的:http://blog.tianya.cn/blogger/post_read.asp?BlogID=666817&PostID=8788268
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 9 楼 splendid_java 的回复:
tomcat默认不会操作shtml的,建议取消server.xml配置文件的注释
啥意思?server.xml?
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 8 楼 YaphetS880621 的回复:
可以试试5楼上说的,,,
我实在没看明白5楼的建议是啥
ZHOU西口 2013-05-17
  • 打赏
  • 举报
回复
tomcat默认不会操作shtml的,建议取消server.xml配置文件的注释
限量版男人__ 2013-05-17
  • 打赏
  • 举报
回复
可以试试5楼上说的,,,
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 5 楼 fangmingshijie 的回复:
好好看看url-pattern匹配规则。有扩展名的,直接去掉.扩展名映射
我不是太懂啊, 去掉扩展名之后是不是应该是这样:

<servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/Admin</url-pattern>
  </servlet-mapping>
虎子kaka 2013-05-17
  • 打赏
  • 举报
回复
10-25万,急招赴日java工程师和项目经理,日语一级,去东京或大阪。详情QQ:1992648885
  • 打赏
  • 举报
回复
好好看看url-pattern匹配规则。有扩展名的,直接去掉.扩展名映射
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 2 楼 Acesidonu 的回复:
匹配 <url-pattern>/Admin.shtml</url-pattern>就跳转了
<servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/Admin.shtml</url-pattern> </servlet-mapping> 这个好像不是用的AdminServlet去匹配/Admin.shtml么?
u010627130 2013-05-17
  • 打赏
  • 举报
回复
引用 2 楼 Acesidonu 的回复:
匹配 <url-pattern>/Admin.shtml</url-pattern>就跳转了
怎么匹配?在web.xml不是已经写了么?
Acesidonu 2013-05-17
  • 打赏
  • 举报
回复
匹配 <url-pattern>/Admin.shtml</url-pattern>就跳转了
u010627130 2013-05-17
  • 打赏
  • 举报
回复
我确定已经跳转到了/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;
					}
				}
			}
lt3 2013-05-17
  • 打赏
  • 举报
回复
不是已经执行到AdminServlet里面了吗? 这跟web.xml的url没什么关系了, 说明路径是正确, 不然她怎么能到servlet呢! 确保没有缓存, 然后用断点在跟踪下。/

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧