以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是由JSP(JavaServer Pages)和Struts2(Struts framework)之间的命名约定引起的。在JSP中,jsp文件的名称通常以“_”字符结尾,并且它们必须使用小写。例如,如果一个jsp文件名为“fortuneWayPoints”,那么它的路径应该像这样:“/jsp/kefu/lieyanzhetian/fortuneWayPoints.jsp”。
而在Struts2中,它有一个叫做“action”的概念,用于处理请求和响应。每个Action都由一个唯一的名称来标识。这个名称被称为“method name”。例如,“initFortuneWayPoints”就是Action的一个方法名。
当用户访问包含此方法名的URL时,Struts2会尝试将这个URL中的“method name”替换为实际的方法名称,然后调用这个方法。因此,如果你的jsp文件的名称是“fortuneWayPoints”,而你的Struts2 Action的方法名称是“initFortuneWayPoints”,那么当用户访问包含这两个名称的URL时,Struts2就会调用initFortuneWayPoints方法。
要解决这个问题,你可以修改你的jsp文件的名称,使其不包含“_”字符,或者直接指定Action的方法名。例如,你可以在jsp文件中添加以下内容:
<%@ 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>Test</title>
</head>
<body>
<p>这是你的内容。</p>
</body>
</html>
然后在你的Struts2 Action中,你应该提供一个方法来处理这个URL,而不是使用“initFortuneWayPoints”。例如:
public class FortuneWayPointsAction implements Action {
@Override
public void execute(ActionContext actionContext) throws Exception {
// 在这里执行你的业务逻辑
}
}
这将确保你在处理请求时不会调用initFortuneWayPoints方法。