ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-05-31 02:02:17  阅读:268  来源: 互联网

标签:baidu sendRedirect RedirectServlet BaiduSearch 404 新手 rsv Servlet response


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

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

HttpServletResponse接口的sendRedirect()方法可以用于将响应重定向到另一个资源,资源可能是servletjsphtml文件。 它接受相对和绝对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 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 设置服务器端内容类型器
        response.setContentType("text/html");
        // 获取服务器端输出对象
        PrintWriter out = response.getWriter();

        // 直接重定向到:www.baidu.com
        response.sendRedirect("https://www.baidu.com");

        out.close();
    }
}
public class BaiduSearch extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 获取用户输入的关键字
        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的原因!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Search by KeyWord</title>
</head>
<body>
    <div style="text-align: center">
        <form action="BaiduSearch">
            关键字:<input type="text" name="keyword"><input type="submit" value="百度搜索">
        </form>
    </div>
</body>
</html>

第六步:配置web.xml

?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    <display-name>ServletRequest</display-name>
    <welcome-file-list>
        <welcome-file>redirect.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>RedirectServlet</servlet-name>
        <servlet-class>RedirectServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RedirectServlet</servlet-name>
        <url-pattern>/RedirectServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>BaiduSearch</servlet-name>
        <servlet-class>BaiduSearch</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BaiduSearch</servlet-name>
        <url-pattern>/BaiduSearch</url-pattern>
    </servlet-mapping>
</web-app>

完成以后!运行就可以了实现Servlet重定向了!!!

 

 

标签:baidu,sendRedirect,RedirectServlet,BaiduSearch,404,新手,rsv,Servlet,response
来源: https://www.cnblogs.com/xu-java/p/Kyrie_Hsu_cnblogs.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有