为什么我用request.getRequestURI()只能获取到一个斜杠呢

为什么我用request.getRequestURI()只能获取到一个斜杠呢

相关截图:

相关代码:

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mv="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <context:component-scan base-package="skn.work"/>
    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="skn.work.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

    <!--    数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT&amp;characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="021325skn"/>
    </bean>
    <!--    jdbctemplate提供数据CRUD的API-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="StudentDao" class="skn.work.StudentDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>
</beans>
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
<form action="/uerLogin" method="post" >
    账号:<input name="id" type="text">
    <br>
    密码:<input name="password" type="text">
    <br>
    <input type="submit" value="登录">
    <input type="reset" value="重新输入">
</form>
<a href="user.jsp">注册用户</a>

</body>
</html>

sknn.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
sdjasjda
</body>
</html>
user.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>user</title>
</head>
<body>
欢迎用户${requestScope.msg}

<form action="" method="post" >
    账号:<input name="id" type="text">
    <br>
    密码:<input name="password" type="text">
    <br>
    <input type="submit" value="注册">
    <input type="reset" value="重新输入">
</form>
</body>
</html>

control.java
package skn.work;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
public class Control {
    @RequestMapping("/uerLogin")
    public String login(HttpServletRequest request, HttpServletResponse response, HttpSession session){
        String id = request.getParameter("id");
        String password = request.getParameter("password");
        Student student = new Student();
        student.setId(id); student.setPassword(password);
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        StudentDao studentDao = context.getBean("StudentDao", StudentDao.class);
        Boolean flag = studentDao.isStudent(student);

        if(flag){
            return "index";
        }else{
            return "login";
        }

    }
}
MyIntereceptor.java
package skn.work;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;

public class MyInterceptor implements HandlerInterceptor {
    private  String[] urls = {"login.jsp", "userLogin"};

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String url = request.getRequestURI();
        if(checkURL(url)){
            return true;
        }else {
            HttpSession session = request.getSession();
            if(session.getAttribute("user") == null){
                request.getRequestDispatcher("login.jsp").forward(request, response);
                return false;
            }else{
                return true;
            }
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("sadasda");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("sadusada");
    }

    private boolean checkURL(String url){
        boolean res = false;
        for (String u : urls){
            if(url.contains(u)){
                res = true;
                break;
            }
        }
        return res;
    }
}

Student.java
package skn.work;

public class Student {
    String id;
    String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

package skn.work;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.util.List;

public class StudentDao {
    private JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void insertStudent(Student student){
        String sql = "insert into students(id, password) value(?, ?)";
        jdbcTemplate.update(sql, new Object[]{student.getId(), student.getPassword()});
    }

    public boolean isStudent(Student student){
        String sql = "select * from students where id = ? and  password = ?";
        RowMapper<Student> rowMapper = new BeanPropertyRowMapper<>(Student.class);
        List<Student> list = jdbcTemplate.query(sql, new Object[]{student.getId(), student.getPassword()}, rowMapper);
        if(list.isEmpty()){
            return false;
        }else{
            return true;
        }
    }
}

https://img1.sycdn.imooc.com//climg/62a5870009affd9f11610108.jpg

问题描述:

不知道为什么我只能获取到/

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2022-06-12 16:58:08

同学你好,建议同学调用getRequestURL()方法,获取到url地址。如下所示:然后重新测试代码试一下。

https://img1.sycdn.imooc.com//climg/62a5aa6f0970732107690117.jpg

祝学习愉快!

  • 提问者 慕数据4371709 #1

    还是一条斜杠啊,老师你这边运行的结果是什么样子的


    2022-06-12 17:01:03
  • 好帮手慕小尤 回复 提问者 慕数据4371709 #2

    同学你好,1、可以获取到整个请求地址。如下所示:

    https://img1.sycdn.imooc.com//climg/62a5b4a90997e9e904280126.jpg

    2、可能是缓存的问题,建议同学查看out目录下的拦截器。查看代码是否正确。如果不正确,建议同学删除out目录,然后重构项目试一下。

    https://img1.sycdn.imooc.com//climg/62a5b2a1099259dc02000170.jpg

    3、如果还存在问题,建议同学反馈项目结构。

    祝学习愉快!

    2022-06-12 18:29:47
  • 提问者 慕数据4371709 回复 好帮手慕小尤 #3

    好的谢谢老师,不过我这个就是好奇怪,但是.html能够获取到

    2022-06-13 09:55:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师