直接用注解就好了 例如@WebServlet({“/d”“/dd”})
因为服务器默认的是doGet方法,而在程序中使用的是doPost方法,所以在单独执行时不被浏览器支持,所以需要在doGet方法中调用doPost方法来实现功能
应该是Tomcat配置的问题
src实际是无效的, .java要变成字节码 .class才能用,而字节码文件都在WEB-INF/class里面,所以其实根目录就是WEB-INF这层,系统去根目录下查找的时候是去WEB-INF下的classes里的目录查找的,你新建的包,以及java类都在这个目录下,这是系统默认的编译规则。
检查一下URL路径对不对
可以这样理解 用重定向等于全新打开一个页面,并不一定是在本项目内的某个页面,所以要写绝对路径,转发的方式则是在本项目的某个界面,
或者把Tomcat运行在Debug模式下,修改过Servlet之后,就不用重启了
不行,还是那样,
总结一下吧,重定向:你用xxx.jsp 和 加上项目的全称的话 都是可以的,前面是相对路径,后面是绝对路径,都可以的,通常情况最好用:绝对路径,也就是加上前面的项目名称。
服务器内部跳转的话:举个例子,一个servlet:地址是Demo/com.servlet/servletDemo1。com.servlet/servletDemo1是这个servlet的设计的URL,Demo是项目名。好,接下来你转发到xxx.jsp,如果不加/,那么就会报错,这时候地址是Demo/com.servlet/xxx.jsp。内部跳转只会改动最后一级的路径,显然xxx.jsp是不在com.servlet包下的,所以404。你说的可以的情况,肯定是之前的页面,就是Demo/xxxx2.jsp这种页面,所有你不加/,跳转,只改动最后一级路径,所以当然也是对的。所以转发通常情况:用/xx.jsp 。servlet的话就是:/com.servlet/servletDemo1,加上/万无一失。不知道讲清楚了没,纯手打,觉得不错,请采纳,谢谢
第一个是相对路径,第二个是绝对路径。所以两个都没问题。
此异常是由于jre的版本不匹配导致的。笔者在使用java8时出现此问题解决方案为:配置项目的编译路径将jre换为更低版本,比如java7。
相对路径
就是在网页端访问应该是怎样?http://localhost:8080/JavaWeb/com.imooc.servlet/HelloServlet?
还是http://localhost:8080/JavaWeb/com/imooc/servlet/HelloServlet?或者其他?
添加代码一样可行的,我用的就是eclipse:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
你添加之后运行试试
你的request.getRequestDispatcher(request.getContextPath()+"/test.jsp").forward(request, response);里面的"/test.jsp"的“/”代表根目录,你在这样的情况下再加上request.getContextPath()之后的结果就是相当于(根目录+根目录+test.jsp)。
request.getRequestDispatcher("../test.jsp").forward(request,response);
会不会因为少了../呢?
或者试着重启Tomcat试试
看一下的你跳转的路径是否正确
如果你使用的是请求重定向的话,要在路径之前加上上下文路径:request.getContextPath() 即:
response.sendRedrect(request.getContextPath()+"/xxx.jsp"); 其中,xxx.jsp表示你要跳转的路径
如果你使用的是请求转发的话,要在你的路径前面加上"/",表示当前项目的根路径 即:
request.getRequestDispather("/xxx.jsp").forward(request,response); 其中,xxx.jsp表示你要跳转的路径
项目的根目录加上/test.jsp
你的Tomcat正常启动了么?就是说 jsp服务器环境变量配置好了么?
后面要发布到项目,
src实际是无效的,.java要变成字节码.class才能用
字节码文件度在WEB-INF/class里面
根目录就是WEB-INF这层
可以不写啊,这样做的原因可能是有多个请求到达这个servlet的时候,采用了不同的提交方式,如果想用相同的逻辑来处理,那就调用啊,写着简单。但是案例课程里面的单一请求应该是没必要的,编程习惯吧应该是
可以不用写,出于严谨,防止发生一些意想不到的错误,比如通过GET方式来访问这个SERVLET了。
笑了...
你是不是弄混了 这并不是重定向和转发的区别,而是为了讲解绝对路径和相对路径的区别才这么写的。
当前路径是指比如在servlet文件包package下的路径,虚拟路径 就是项目发布在Tomcat上的路径吧
不太懂你的意思。
如果是说servlet中,比较重要的方法的话。以下:
init()初始化方法
service()
doGet()和doPost()//取决于request提交表单方式,由service()选择调用
destroy()
eclipse确实不一样,我的eclipse里面服务器内部跳转request.getRequestDispatcher("userinfo.jsp").forward(request,response);这样写才对,