正在回答
同学你好!
@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会拦截所有请求,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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积分~
来为老师/同学的回答评分吧