SpringMVC案例 - 简单登录


前言

SpringMVC 是Web层的框架Spring是业务层的框架,MyBatis是持久层的框架

SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,SpringMVC是为了简化我们日常Web开发。

本章资源:

SpringMVC依赖库:https://pan.baidu.com/s/168g3ilpw6vta8SAOgCuBYw?pwd=1111


一、创建web项目

首先:IDEA创建web项目

二、步骤

1.加入springmvc框架的依赖库

右键web新建package命名为lib
在这里插入图片描述
在这里插入图片描述
将依赖库解压放进lib
在这里插入图片描述


2.导入工作路径

右键工作目录(springmvcDemo),F4
在这里插入图片描述
选择刚刚的 lib 文件夹
在这里插入图片描述
选择tomcat
在这里插入图片描述
在这里插入图片描述
然后勾选刚刚添加的两个东西

在这里插入图片描述


3.配置web.xml【配置前端控制器】

<!-- 定义Spring MVC的前端控制器 -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!--初始化参数配置  配置xml文件路径-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:springMVC.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<!--Spring MVC的前端控制器拦截所有请求 -->
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

放在 WEB-INF 目录下的 web.xml 里
在这里插入图片描述


3.创建resources资源文件夹

新建文件夹,命名为 resources
在这里插入图片描述
设置文件夹类型,右键该(resources)文件夹,F4

在这里插入图片描述
将 springMVC.xml 放进 resources 文件夹中,以下是 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" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

	<!--启动注解识别 -->
	<context:annotation-config />
	<!--扫描controller包,将controller交给SpringIOC容器进行对象管理 -->
	<context:component-scan base-package="com.gec.controller">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>
	<!--开启注解驱动 -->
	<mvc:annotation-driven />
	<!-- 支持文件上传 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="104857600" />
		<property name="maxInMemorySize" value="4096" />
		<property name="defaultEncoding" value="UTF-8"></property>
	</bean>
	<!--开通静态资源的访问 -->
	<mvc:default-servlet-handler />
	<!-- 视图解析器 -->
	<bean
	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

4.编写controller

右键 src 文件夹新建 package ,命名为:com.gec.controller
在这里插入图片描述
在这里插入图片描述
新建UserController.java文件,以下是UserController.java代码:

package com.gec.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {

//  http://localhost:8080/springmvcDemo/login?name=admin&password=123456
    //定义请求处理的方法【登录请求处理】【方法】
    @RequestMapping("/login")
    @ResponseBody  //意思:直接返回数据,输出到页面中,不跳转页面
    public String login(String name, String password) {
        //
        if (name.equals("admin") && password.equals("123456")) {
            return "login success!";
        } else {
            return "login failed!";
        }
    }


}


5.重新生成 Artifacts

先删去原本的war
在这里插入图片描述
再重新加war
在这里插入图片描述
在这里插入图片描述


6.运行测试

选取项目名,编译
在这里插入图片描述
tomcat运行成功:在这里插入图片描述

复制到浏览器运行:http://localhost:8080/springmvcDemo/login?name=admin&password=123456

因为正确,所以显示在这里插入图片描述

如果我们修改链接为:

http://localhost:8080/springmvcDemo/login?name=admin&password=1234567

则会在这里插入图片描述

因为返回的密码不是原本设定的


进阶挑战

1.有前端界面参与输入 的登陆实现

在web目录新建index.jsp
在这里插入图片描述
login.jsp代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/springmvcDemo/login">
    用户名:<input type="text" name="name"/><br>
    密码:<input type="password" name="password"/><br>
    <input type="submit" value="登录"/><br>
</form>
</body>
</html>

UserControllor.java改为:

package com.gec.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {

// //   http://localhost:8080/springmvcDemo/login?name=admin&password=123456
//    //定义请求处理的方法【登录请求处理】【方法】
//    @RequestMapping("/login")
//    @ResponseBody  //意思:直接返回数据,输出到页面中,不跳转页面
//    public String login(String name, String password) {
//        //
//        if (name.equals("admin") && password.equals("123456")) {
//            return "login success!";
//        } else {
//            return "login failed!";
//        }
//    }


    //页面跳转的请求处理方法
    @RequestMapping("/login")
    public String login(String name, String password) {
        //登录成功
        if (name.equals("admin") && password.equals("123456")) {
            return "redirect:/index.html";//  重定向  不走视图解析器的
        } else {//登录失败
            return "login";//  走视图解析器的   /login.jsp
        }
    }
}

编译、执行:(自动跳到首页)
在这里插入图片描述
在导航栏输入login.jsp,回车
在这里插入图片描述
试一下正确的账号:admin,密码:123456
在这里插入图片描述
试一下错误的账号:adm,密码:123456
在这里插入图片描述
自动跳回本页面,并在地址栏显示刚刚输入的name和password


2.将数据封装起来

  1. 在src.com.gec建立package bean
  2. 再建立User.java

在这里插入图片描述
User.java代码如下:

package com.gec.bean;

//user实体类【标准java类的定义】 com.bean.User
public class User {

    private int id;
    private String name;
    private String password;
    private int age;

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

    public User() {
    }

    public User(int id, String name, String password, int age) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.age = age;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

3.将UserController.java代码更改如下:

package com.gec.controller;

import com.gec.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//标志注解,用于标明当前类是控制的代码,交给ioc容器管理的
@Controller
public class UserController {

/*     //页面跳转的请求处理方法  
    @RequestMapping("/login")
    public String login(String name, String password) {
        //登录成功
        if (name.equals("admin") && password.equals("123456")) {
            return "redirect:/index.html";//  重定向  不走视图解析器的
        } else {//登录失败
            return "login";//  走视图解析器的   /login.jsp
        }
    }
*/
    //页面跳转的请求处理方法
    @RequestMapping("/login")
    public String login(User user) {
        //登录成功
        if (user.getName().equals("admin") && user.getPassword().equals("123456")) {
            return "redirect:/index.html";//  重定向  不走视图解析器的
        } else {//登录失败
            return "login";//  走视图解析器的   /login.jsp
        }
    }
}


注意 User 类要打包,左键单击 User 按alt + enter

在这里插入图片描述在这里插入图片描述
编译、运行,效果如下:

在这里插入图片描述
在地址栏后缀输入 login.jsp 进入登陆界面
在这里插入图片描述
输入错误的信息点击登陆,登不进而且输入的信息会在导航栏出现
在这里插入图片描述
输入正确的账号
在这里插入图片描述
将导航栏显示的name和password改正确也是可以进入到首页

over


  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高冷的上官梓芸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值