Java 带有包的Servlet不';t工作并在url中复制包两次
编辑:被标记为重复()我在第一次设置servlet时没有任何问题,一切正常,提交时正确加载结果。副本显示了如何设置xml和jsp,我用同样的方法设置了它们。如果我一次正常重试不填写,但第二次不管是否正确,url都会变成Java 带有包的Servlet不';t工作并在url中复制包两次,java,html,jsp,url,servlets,Java,Html,Jsp,Url,Servlets,编辑:被标记为重复()我在第一次设置servlet时没有任何问题,一切正常,提交时正确加载结果。副本显示了如何设置xml和jsp,我用同样的方法设置了它们。如果我一次正常重试不填写,但第二次不管是否正确,url都会变成../one/one/main,结果是404 如果我将xml的url模式设置为没有包的类名(在示例/servlet),servlet甚至不会在第一次正确尝试时启动。不管url模式和表单引用如何,在url模式上我有/one/Main,在表单上有one/Main。在副本中,我尝试的任何
../one/one/main
,结果是404
如果我将xml的url模式设置为没有包的类名(在示例/servlet
),servlet甚至不会在第一次正确尝试时启动。不管url模式和表单引用如何,在url模式上我有/one/Main
,在表单上有one/Main
。在副本中,我尝试的任何表单示例在提交后都会产生404。
我试图删除xml servlet配置,并使用@WebServlet
从servlet中删除(@WebServlet(description=“Main”,urlPatterns={/one/Main“})
),我遇到了同样的问题,第一次有效,第二次尝试url中的one/one/Main
在这个简单的servlet中,每当我使用包时,当我第二次不填充两个输入文本字段时,它就会将url更改为。/one/one/Main
public void doPost(HttpServletRequest request
, HttpServletResponse response) throws ServletException, IOException{
String action = request.getParameter("action");
String url = "/index.jsp";
if(action==null)
action="join";
if(action.equals("join"))
url="/index.jsp";
else if(action.equals("ok")){
String fName = request.getParameter("firstName");
String sName = request.getParameter("secondName");
if(fName==null||sName==null||fName.equals("")||sName.equals("")){
url = "/index.jsp";
request.getSession().setAttribute("message"
, "Please fill all the fields");
}
else{
url = "/thanks.jsp";
request.getSession().setAttribute("user"
, new User(fName, sName));
}
}
getServletContext().getRequestDispatcher(url)
.forward(request, response);
}
jsp表单部件
<form action="one/Main" method="post">..</form>
。。
xml servlet映射
<servlet>
<servlet-name>Main</servlet-name>
<servlet-class>one.Main</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/one/Main</url-pattern>
</servlet-mapping>
主要
一,主要的
主要
/一个/主要
我尝试将类复制到
one
包之外,并相应地重新配置表单标记和xml(将servlet类设置为Main
,将模式设置为/Main
,将jsp操作设置为Main
),在这一点上,它可以完美地工作,我可以错过填充字段的次数,它将继续用消息重新加载适当的页面,但是当我运行并两次错过输入时,只要servlet和用户
javabean都在一个包中,url就会变为双包/Main
,我就有一个404。问题是您正在使用JSP中的相对路径来提交表单。一旦JSP与servlet不在同一个基本路径上,提交表单后就会有不同的基本路径
您应该阅读以下内容以了解相对URL的工作原理:
相对URL(在中定义)不包含任何协议
或机器信息。它的路径通常指网络上的资源
与当前文档相同的计算机。相对URL可能包含
相对路径组件(”。“
表示层次结构中的上一级
由路径定义),并可能包含片段标识符
相对URL使用基本URL解析为完整URL。
定义此过程的标准算法
作为相对URL解析的一个示例,假设我们有基本URL
http://www.acme.com/support/intro.html
。中的相对URL
超文本链接的以下标记:
<A href="suppliers.html">Suppliers</A>
将扩展到完整的URLhttp://www.acme.com/icons/logo.gif
<IMG src="../icons/logo.gif" alt="logo">