SpringMVC基于非注解方式(BeanNameUrlHandlerMapping)实现的简单登陆备忘(Intellij idea)

效果:

登陆页面:

登陆页面

登陆失败:

这里写图片描述

登陆成功(用户名:admin,密码:123):

这里写图片描述


环境搭建及准备

使用 Intellij Idea自带的maven工具进行创建,过程省略.

1.SpringMVC依赖

这里要做的事情很简单,因此只需要这几个依赖.依赖可以在maven中央仓库找到.
spring-web
spring-webmvc
javax.servlet-api

2.配置文件

springmvc.xml   springmvc的配置文件,用于配置处理器映射器,处理器适配器,视图解析器,handler
web.xml         web项目的配置文件,用于配置spring的DispatcherServlet
pom.xml         用于引入各种依赖,搭建框架

3.java实现类(controller)

LoginController.java  handler,需要实现Controller接口,并重写handleRequest方法,返回ModelAndView对象

4.jsp文件(视图层)

login.jsp     登陆页面,内含表单
success.jsp   登陆成功页面

文件目录结构

这里写图片描述


整体过程

1.在login.jsp的form表单里填写信息,以特定的后缀作为提交请求
2.在web.xml里的DispatcherServlet拦截到这个请求,然后通过handlermapping找到对应的Handler
3.找到handler后执行
4.返回一个ModelAndView对象,这个对象里包含了我们在handler里操作的一些数据
5.ModelAndView对象被传到ViewResolver里进行解析成具体的视图
6.视图作为响应信息回传给用户

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>spingmvc</groupId>
    <artifactId>MVC</artifactId>
    <version>1.0.0</version>

    <packaging>war</packaging>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.14.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.14.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--主页-->
    <welcome-file-list>
        <welcome-file>/pages/login.jsp</welcome-file>
    </welcome-file-list>
    <!--配置前端控制器DisptcherServlet  -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <!--如果不配置这个选项,默认加载classpath下面名为[servlet-name]-servlet.xml 的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--一般配置*.do,*.action 如果配置/ 需要过滤静态资源-->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
    <!--配置处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

    <!--注册我们定义的controller并配置url与controller的对应关系
        当拦截到login.do的请求时,处理器映射器就可以通过这个设置找到我们的LoginController并云心-->
    <bean name="/login.do" class="com.zsb.controller.LoginController"></bean>
</beans>

LoginController.java

package com.zsb.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        /*通过request对象获得请求的数据*/
        String username = httpServletRequest.getParameter("username");
        String password = httpServletRequest.getParameter("password");
        //创建MdoelAndView对象,用于返回
        ModelAndView modelAndView = new ModelAndView();
        //针对获得请求数据,进行相关操作,这里简化了从数据库取值的操作
        if(username != null && password != null){
            if(username.equals("admin") && password.equals("123")){
                //向ModelAndView对象里添加loginFlag参数,用于jsp页面提取显示
                modelAndView.addObject("loginFlag","登陆成功");
                modelAndView.setViewName("/pages/success.jsp");
            }else{
                modelAndView.addObject("loginFlag","用户名或者密码错误");
                modelAndView.setViewName("/pages/login.jsp");
            }
        }else{
            modelAndView.addObject("loginFlag","用户名或者密码错误,登陆失败");
            modelAndView.setViewName("/pages/login.jsp");
        }
        return modelAndView;
    }
}

login.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
    <base href="<%=basePath%>">
    <title>登陆页面</title>
</head>
<body>
<h1>登陆页面</h1>
<form action="<%=path%>/login.do" method = "post">
    用户名: <input type = "text" name = "username"><br><br>
    密码: <input type = "password" name = "password"><br><br>
    <input type = "submit" value = "登陆"> ${loginFlag}
</form>
</body>
</html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆成功页面</title>
</head>
<body>
    <h1>${loginFlag},进入主页</h1>
</body>
</html>

要激活基于注解的配置方式,需要进行以下步骤: 1. 在Spring配置文件中添加以下内容: `<mvc:annotation-driven/>` 这个配置会启用Spring MVC的注解驱动,使得可以使用注解来配置控制器和请求处理方法。 2. 在控制器类上添加`@Controller`注解,将该类标识为一个控制器。 3. 在请求处理方法上添加`@RequestMapping`注解,用于指定请求的路径。 例如,我们可以定义一个控制器类`ExampleController`,并配置请求的路径为`example`: ```java @Controller @RequestMapping("example") public class ExampleController { // 请求处理方法 } ``` 这样,当访问`http://localhost:8080/项目名/example`时,就会调用`ExampleController`中对应的请求处理方法。 引用\[1\]和\[2\]提供了具体的代码示例,可以参考其中的内容进行配置。 #### 引用[.reference_title] - *1* [springmvc 基于注解的配置说明](https://blog.csdn.net/han1396735592/article/details/100040564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SpringMVC_基于注解开发](https://blog.csdn.net/guoguo0717/article/details/110225495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值