html跳转到servlet 404,Servlet重定向出现404问题是什么问题?搞了我几天,终于解决了呢(新手勿喷)...

一定要几年这个开心的时刻!!!因此大晚上的解决了Servlet重定向404的问题,针对我自己的问题,如果你也有这样的情况,可以参考一下!

工具:IDEA 2020、Tomcat 9(本来使用的是10,但是发现怎么也实现不了!后来就换成了9)

HttpServletResponse接口的sendRedirect()方法可以用于将响应重定向到另一个资源,资源可能是servlet,jsp或html文件。它接受相对和绝对URL。

sendRedirect()方法:

(这里我针对该方法显示实例)

sendRedirect()方法的语法:

public void sendRedirect(String URL)throws IOException;

sendRedirect()方法的示例:

response.sendRedirect("http://www.baidu.com");

首先从配置Tomcat开始,因为不像在Eclipse上会直接部署到webapps上,因此对于IDEA的使用者需要事先配置:

第一步:

创建项目,对于IDEA 2020要做web项目,要选择:

java Enterprise ->勾选Web Application -> 创建项目名称MyServlet-03

第二步:配置相关路径

1、在web文件夹下的WEB-INF下创建两个文件夹分别是classes和lib

2、File -> Project Structure -> Modules -> Paths(选择Use module compile output path),注意:两个地址都要配置到刚刚创建的classes下

3、Libraries-> "+"-> java-> 选择刚刚创建的lib文件-> jar Directory-> ok

第三步:配置Tomcat

Run-> Edit Configurations-> "+"-> Tomcat Server -> local-> Server的Application server-> Configure-> 选择你的Tomcat位置(比如我的apache-tomcat-9.0.46)

注意:在Deployment下的Application context就是访问的地址,比如说我的“/MyServlet_03_war_exploded”,那么我的访问地址就是“localhost:8080/MyServlet_03_war_exploded”

第四步:创建RedirectServlet.java和BaiduSearch.java

public class RedirectServlet extendsHttpServlet {private static final long serialVersionUID = 1L;

@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throwsIOException {//设置服务器端内容类型器

response.setContentType("text/html");//获取服务器端输出对象

PrintWriter out =response.getWriter();//直接重定向到:www.baidu.com

response.sendRedirect("https://www.baidu.com");

out.close();

}

}

public class BaiduSearch extendsHttpServlet {private static final long serialVersionUID = 1L;

@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throwsIOException {//获取用户输入的关键字

String keyword =request.getParameter("keyword");

System.out.println(keyword);

String url= "https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&ch=&tn=baidu&bar=&wd="+keyword+"&oq=serious&rsv_pq=b7e075bf00169b14&rsv_t=6c67hEJVKkO%2Bkg08XTXPh9dlymb7lzNfD9TVjJHyHFxBgPqqSGuCNRywm30&rqlang=cn&rsv_enter=1&prefixsug=%25E4%25BD%25A0%25E5%25A5%25BD&rsp=1&rsv_dl=ts_1&inputT=8774";

System.out.println(url);//重定向的百度搜索

response.sendRedirect(url);

}

}

第五步:创建redirect.html(注意:这个html的位置一定要放在和jsp同一个文件下)而我总是把它放到了WEB-INF文件夹下与xml并列,在servlet类中肯定识别不(我是这么理解的)。这也是我出现404的原因!

Search by KeyWord

关键字:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
----------重定向---------------------------------------------------------------------------------- //将工程重定向到我们的腾讯网页 response.sendRedirect("http://www.qq.com"); //重定向的好处:不但可以跳转到本工程的资源 也可以跳转到其它资源 response.sendRedirect("userInfo"); //重定向跳转方式为get(如果下一个servlet中没有get方法 将出现异常) 注意事项:a标签和重定向差不多 通过a标签进行跳转时也是调用doGet()方法 //从地址栏上方进入网页也是调用的servlet的get方法 //在使用doGet()方法时还要做验证 看用户是否已经登录 -----转发--------------------------------------------------------------------------- request.setAttribute("un",userName) String userName=(String)response.getAttribute("un"); //但是由于请求资源传递不是连续的 它一次请求后寿命结束 为了延续它的寿命 在页面跳转时 我们不用重定向 我们使用转发 如下: //获得资源定位 然后将请求转发出去----首先将资源定位到list 然后将当前的request和response转发出去--转发 request.getRequestDispatcher("list").forward(request,response); //参数传递 J2EE1.4以下就是将引用直接拷贝过去 J2EE拷贝的是副本 //如果在doPost方法中写转发就会进入对方的doPost() 方法 包含转发的方法是什么方法就进入对方的什么方法 //转发的缺点:只能在本工程内转发 //转发和重定向是都是一瞬间就跳转到了要转发的页面 中间的内容基本没有时间显示 解决这个问题的方法如下: 包含转发 request.getRequestDispatcher("login.html").include(request.response); //就是将该页面所包含的所有的网页代码包含到我所要跳转的目的地去

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值