第一次编写servlet对配置的疑问

Little BigUs 湖南科技大学 2021-05-10 12:09:39
在web.xml文件中加入下面的代码的话所有页面都无法直接从IDEA右上角访问,去掉后就可以访问。
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.example.myWebsite.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

后面多次尝试,发现其实是mapping的问题,去点mapping后能正常访问,请问是什么原因,会不会是servlet编写有问题
package com.example.myWebsite;

import java.io.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
private String message;

public void init(ServletConfig config)throws ServletException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
String name = request.getParameter("name");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>" +
"<head><title>Servlet运行</title></head>" +
"<body><h2>您好"+name+"</h2></body>" +
"</html");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
doGet(request, response);
}
public void destroy() {
}
}

jsp代码:
<%--
Created by IntelliJ IDEA.
User: luo'xin
Date: 2021/5/9
Time: 23:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎</title>
</head>
<body>
<h2>Servlet</h2>
<form method="post" action="/hello">
姓名:<input name="name" type="text">
<button type="submit">提交</button>
</form>
</body>
</html>
...全文
1098 点赞 收藏 16
写回复
16 条回复
两个问题: 1.注解配置和xml配置不能同时存在 2.注解配置的url和xml配置的url不同
回复 点赞
m0_49176541 05月13日
啊这。。。。
回复 点赞
冰思雨 05月13日
楼主的目标是啥啊? 看不明白。 1. 有了 注解 @WebServlet 就不要去 web.xml 里面配置了,两个都配同一个类,重复了。 2. JSP 页面,会被转换为 [Servlet].java 文件,然后,编译成 [Servlet].class 文件, 最后加载到 JVM 中运行。楼主编写的 Servlet 与 JSP 其实都会编译成 Java 类的。 3. Servlet 要跳转到 JSP 文件的话,需要了解 内部跳转 和 外部跳转 区别,然后,redirect 即可。
回复 点赞
YIMiHan 05月12日
xml配置和@webservlet(value="")作用相同,重复冲突了,留一个及可。
回复 点赞
qq_39936465 05月11日
引用 8 楼 Little BigUs 的回复:
引用 7 楼 afrgefitx的回复:
[quote=引用 6 楼 Little BigUs 的回复:][quote=引用 5 楼 afrgefitx 的回复:]你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内[/quote] 这个工具好像不用自己去放,我javabeans文件就没放也行,我等下去放试试看,非常感谢耐心的解答[/quote] 路径问题,因为你用的是jsp没有配置映射路径的话默认是放在 WEB-INF文件夹下的。
回复 点赞
Little BigUs 05月11日
引用 7 楼 afrgefitx的回复:
引用 6 楼 Little BigUs 的回复:
[quote=引用 5 楼 afrgefitx 的回复:]你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内[/quote] 这个工具好像不用自己去放,我javabeans文件就没放也行,我等下去放试试看,非常感谢耐心的解答
回复 点赞
afrgefitx 05月11日
引用 6 楼 Little BigUs 的回复:
引用 5 楼 afrgefitx 的回复:
你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内
回复 点赞
Little BigUs 05月11日
引用 13 楼 Little BigUs 的回复:
引用 7 楼 afrgefitx 的回复:
[quote=引用 6 楼 Little BigUs 的回复:][quote=引用 5 楼 afrgefitx 的回复:]你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内[/quote解决了,是路径问题,其实把action="/hello"中的/去掉就行了,感谢感谢[/quote]说错了,前面去掉/能找到是我在根目录下创建了一个新jsp文件,所以能直接找到servlet,如果是我前面那样的位置的话还要修改路径使其能找到servlet
回复 点赞
Little BigUs 05月11日
引用 9 楼 qq_39936465 的回复:
引用 8 楼 Little BigUs 的回复:
[quote=引用 7 楼 afrgefitx的回复:][quote=引用 6 楼 Little BigUs 的回复:][quote=引用 5 楼 afrgefitx 的回复:]你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内[/quote] 这个工具好像不用自己去放,我javabeans文件就没放也行,我等下去放试试看,非常感谢耐心的解答[/quote] 路径问题,因为你用的是jsp没有配置映射路径的话默认是放在 WEB-INF文件夹下的。[/quote]解决了,是路径问题,其实把action="/hello"中的/去掉就行了,感谢感谢
回复 点赞
Little BigUs 05月11日
引用 7 楼 afrgefitx 的回复:
引用 6 楼 Little BigUs 的回复:
[quote=引用 5 楼 afrgefitx 的回复:]你把错误代码贴出来啊
就是404找不到页面
class 放了没? 我一般用tomcat调试 不用这个工具 class要放在web——inf 下 classes文件夹内[/quote解决了,是路径问题,其实把action="/hello"中的/去掉就行了,感谢感谢
回复 点赞
兽兽 05月10日
为啥学这古老的servlet springboot它不香吗 servlet类里面不是应该 init 或service 吗 你把代码放到init或service里面看看撒
回复 点赞
Little BigUs 05月10日
引用 5 楼 afrgefitx 的回复:
你把错误代码贴出来啊
就是404找不到页面
回复 点赞
afrgefitx 05月10日
你把错误代码贴出来啊
回复 点赞
afrgefitx 05月10日
@WebServlet(urlPatterns = "/wxcallback", loadOnStartup = 1) 要么这样? 要么 web。xml <servlet> <servlet-name>DownloadServlet</servlet-name> <servlet-class>beans.DownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DownloadServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
回复 点赞
Little BigUs 05月10日
引用 2 楼 afrgefitx 的回复:
java 方法中 写了 @WebServlet(name = "helloServlet", value = "/hello-servlet") 可以不用web。xml中加 <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.example.myWebsite.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
我也是刚刚知道,但是改了后还是不行啊~~~ 不知道是不是路径的问题
回复 点赞
afrgefitx 05月10日
java 方法中 写了 @WebServlet(name = "helloServlet", value = "/hello-servlet") 可以不用web。xml中加 <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.example.myWebsite.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告