俊俊的良 2023-05-20 17:41 采纳率: 50%
浏览 23

ssm中ajax登录怎么跳转到web-inf下?

SSM中Ajax用window.location.href访问web-inf报404

描述:SSM中使用Ajax登录,成功后用window.location.href跳转web-inf失败,配置了资源放行还是404

img

img

Ajax

$.ajax({
                    type: "POST",
                    url: "/user/login",
                    data: {uname: username, password: password},
                    dataType: "text",
                    success: function (data) {
                        if (data==="true") {
                            window.location.href="http://localhost:8080/jsp/index.jsp";
                        } else {
                            alert("用户名或密码错误!")
                        }
                    }, error: function () {
                        alert("出错啦。。。")
                    }
                });

web.xml

 <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

springmvc-servlet.xml

<!--静态资源交给tomcat处理 不再被dispatcher拦截-->
    <mvc:default-servlet-handler/>
    <!--配置静态资源放行-->
    <mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/"/>
    <!--开启注解驱动 配置 处理器映射器和处理器适配器-->
    <mvc:annotation-driven/>
    <!--开启扫描controller组件-->
    <context:component-scan base-package="com.zhiyou.controller"/>
    <!--配置视图解析器 添加前后缀-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

  • 写回答

1条回答 默认 最新

  • 小泽的熊先森 2023-05-20 17:55
    关注

    这是因为WEB-INF目录是受保护的,无法直接通过URL访问其中的内容。
    WEB-INF目录下的内容通常包含Web应用程序的配置文件、Java类文件和其他敏感信息,它们不应该被直接暴露给用户访问。应该通过控制器(Controller)将需要呈现给用户的内容发送到浏览器。
    如果你想要使用Ajax登录后跳转到受保护的页面,你可以在服务器端Controller处理Ajax请求,然后在服务器端进行页面跳转。

    为了解决这个问题,您可以考虑以下两种方法:
    将要访问的资源移出WEB-INF目录:将需要访问的资源(例如JSP页面或其他静态文件)移动到WEB-INF目录外的合适位置,然后使用window.location.href进行重定向。这样就可以通过URL直接访问该资源了。
    使用服务器端跳转:在Ajax登录成功后,不要使用window.location.href进行重定向,而是返回一个重定向的URL(或者其他相关的数据),然后在Ajax的回调函数中使用JavaScript执行页面跳转。在服务器端,您可以使用Spring MVC提供的RedirectView或者ModelAndView来实现服务器端跳转。这样可以避免直接访问WEB-INF目录,同时保持用户在浏览器上的访问路径不变。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月20日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值