tomcat可以发布,但是有404错误,找了很久,问题不知道在哪里
public class GlobalController extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
/**
.do
/login.do DefaultController login
/Cake/detail.do CakeController detail
/admin/Cake/add.do CakeController add
*/
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
String path = request.getServletPath();
if (path.indexOf("/admin")!=-1){
path = path.substring(7);
}else {
path = path.substring(1);
}
/**
* path = Catalog/list.do
* path = 以下一种
login.do DefaultController login
cake/detail.do CakeController detail
Cake/add.do CakeController add
*/
int index = path.indexOf("/");//indexof,判断是否包含 (index!=-1) 意思为包含
String className = null;
String methodName = null;
if (index!=-1){
className = "com.imooc.icake.controller."+path.substring(0,index)+"Controller";
methodName = path.substring(index+1,path.indexOf(".do"));
}else{
className = "com.imooc.icake.controller.DefaultController";
methodName = path.substring(0,path.indexOf(".do"));
}
try {
Class cla = Class.forName(className);
// Object object = cla.getDeclaredConstructor(int.class).newInstance();
Object object = cla.newInstance();
Method method = cla.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(object,request,response);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}public class CatalogController {
private CatalogBiz catalogBiz = new CatalogBizImpl();
/**
* /admin/Catalog/list.do
* /admin/Catalog/toAdd.do
* /admin/Catalog/add.do
* /admin/Catalog/remove.do
*/
// /admin/Catalog/list.do
public void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Catalog root = catalogBiz.getRoot();
request.setAttribute("root",root);
request.getRequestDispatcher("/WEB-INF/pages/admin/catalog_list.jsp").forward(request,response);
}
// /admin/Catalog/toAdd.do
public void toAdd(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
Catalog root = catalogBiz.getRoot();
request.setAttribute("root",root);
request.getRequestDispatcher("/WEB-INF/pages/admin/catalog_add.jsp").forward(request,response);
}
// /admin/Catalog/add.do
public void add(HttpServletRequest request,HttpServletResponse response) throws IOException {
String[] titles = request.getParameterValues("title");
String[] pids = request.getParameterValues("pid");
String[] infos = request.getParameterValues("info");
List<Catalog> list = new ArrayList<Catalog>();
for(int i = 0; i < titles.length; i++){
Catalog catalog = new Catalog();
catalog.setTitle(titles[i]);
catalog.setPid(Integer.parseInt(pids[i]));
catalog.setInfo(infos[i]);
list.add(catalog);
}
catalogBiz.add(list);
response.sendRedirect("list.do");
}
// /admin/Catalog/remove.do
public void remove(HttpServletRequest request,HttpServletResponse response) throws IOException {
int id = Integer.parseInt(request.getParameter("id"));
catalogBiz.remove(id);
response.sendRedirect("list.do");
}
}14
收起
正在回答
6回答
同学你好,建议同学再如下位置处再输出一下path,查看是否有值。另外建议同学在获取path的位置处打上断点,使用debug启动项目,查看是否有执行到该位置。

如果控制台有报错,建议同学将报错贴一下。
祝:学习愉快~
慕码人5437048
2019-11-13 16:45:42
有的,xml的配置是这样的
<?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <filter> <filter-name>encoding</filter-name> <filter-class>com.imooc.icake.global.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>GlobalServlet</servlet-name> <servlet-class>com.imooc.icake.global.GlobalController</servlet-class> </servlet> <servlet-mapping> <servlet-name>GlobalServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
慕码人5437048
2019-11-13 10:49:36
输入的网页是:http://localhost:8080/admin/Catalog/list.do
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星