正在回答
同学你好!
@WebServlet("/LoginServlet")与@RequestMapping("/LoginServlet")经过底层的解析都会在web.xml中注册。一个是比较底层,另一个是框架中的,但是经过最后的编译,底层解析它们都是一样的。因此DispatcherServlet拦截时以上两种方式都会通过。然后去访问地址。
css属于静态资源,默认并没有在web.xml中配置,因此它被DispatcherServlet拦截到之后,并没有通过,所以不能访问
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
老师,我回去看了下
这里面将的不是DispatcherServlet执行流程么?没讲到它和普通Servlet的关系呀。
(1)那这么说的话我是不是可以理解成DispatcherServlet是一个过滤器的样子啊?拦截到并且找到Handler的话就继续执行Handler里的方法,执行完毕之后在继续执行请求的Servlet里的方法
(2)如果DispatcherServlet拦截后没有发现匹配的Handler,就直接执行请求的Servlet。
(3)如果只是过滤的话,那为什么css的访问路径就会被截下,导致无法导入CSS样式呢?这样的话JS的访问路径岂不是也不安全
老师,在课程讲解中说到,因为在SpringMVC中DispatcherServlet设置了全路径拦截,所以CSS样式无法导入,因为DispatcherServlet会拦截所有请求,如下:
<!-- springMVC设置--> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
可是,我试着写了个传统方式的Servlet来处理一个表单的请求,发现可以正常跳转到该Servlet啊,这是为什么啊?它不被DispatcherServlet拦截么?
相关代码:
login.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 用户登录界面 <form action="LoginServlet" method="post"> <div> 用户名:<input type="text" name="username"> </div> <div> 密码:<input type="password" name="password"> </div> <div> <input type="submit" value="登录"> </div> </form> </body> </html>
Login.java:
package com.lgq.springmvc.Servlet; import com.lgq.springmvc.eneity.User; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String password=request.getParameter("password"); User user=new User(); user.setUsername(username); user.setPassword(password); System.out.println(user);//这句可以正常输出 } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星