SpringMVC 02 基于注解的控制器开发使用

创建基于注解控制器的应用实现(注册和登录)

1.目录结构

在这里插入图片描述

2.常见的问题解决,主要解决 404问题

2.1 (404页面的出现),总的来说是路径不对

在这里插入图片描述

2.2 配置转发器时错误(这里报 500 init 错误)

在这里插入图片描述

2.3 结构路径不对而导致的 配置文件无法找到,请参考 文章头 给的 结构图

2.4 web.xml 文件配置不正确, 如发生代码错误,或者 xml头文件声明不正确 而报错404

2.5 jar包导入过多而重叠报错,此时报 500 init错误.

3.注解控制器的应用(后端代码固定的 登录和注册)

3.1 web.xml文件 , 导入jar 包(这里不在提醒)

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

    <!--部署DispatcherServlet-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.2 DispatcherServlet-servlet.xml 文件

<?xml version="1.0" encoding="UTF-8"?>

<!--注解 配置控制器 -->
<!-- 1. 配置扫描包-->
<context:component-scan base-package="com.dhl.backstage"/>

<!-- 2. 使用注解 配置处理映射-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<!-- 3. 配置适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--4.配置  资源视图解析器   (对本地视图的路径解析处理)-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
    <!--设置前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <!--设置后缀-->
    <property name="suffix" value=".jsp"></property>
</bean>

3.3 Controller 文件

indexController
package com.dhl.backstage.controller;

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

@Controller
@RequestMapping("/index")
public class indexController {

    @RequestMapping("login")
    public String isLogin(){

        return "login";
    }

    @RequestMapping("register")
    public String isRegister(){

        return "register";
    }
}

UserController
package com.dhl.backstage.controller;

import com.dhl.backstage.domain.UserForm;
import com.dhl.backstage.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.text.Normalizer;


@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;


    @RequestMapping(value = "register")
    public String register(@ModelAttribute("user")UserForm user){
        if(userService.register(user)){
            return "login";
        }else

        return "register";
    }

    @RequestMapping(value = "login")
    public String login(UserForm user){
        if (userService.login(user)){
            return "main";

        }else
            return "login";

    }


}

3.4 Service and ServiceImpl 文件
package com.dhl.backstage.service;

import com.dhl.backstage.domain.UserForm;

public interface UserService {

    public boolean login(UserForm user);
    public boolean register(UserForm user);
}

package com.dhl.backstage.service.serviceImpl;

import com.dhl.backstage.domain.UserForm;
import com.dhl.backstage.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {


    @Override
    public boolean login(UserForm user) {
        if("dhl".equals(user.getUname()) && "123456".equals(user.getUpass()))
            return true;
        return false;
    }

    @Override
    public boolean register(UserForm user) {
        if("dhl".equals(user.getUname()) && "123456".equals(user.getUpass()))
            return true;
        return false;
    }
}

3.5 实体类文件

package com.dhl.backstage.domain;


import org.springframework.stereotype.Component;

@Component
public class UserForm {
    private String uname;
    private String upass;
    private String reupass;

    @Override
    public String toString() {
        return "UserForm{" +
                "uname='" + uname + '\'' +
                ", upass='" + upass + '\'' +
                ", reupass='" + reupass + '\'' +
                '}';
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpass() {
        return upass;
    }

    public void setUpass(String upass) {
        this.upass = upass;
    }

    public String getReupass() {
        return reupass;
    }

    public void setReupass(String reupass) {
        this.reupass = reupass;
    }
}

3.6 映射文件

login.jsp
<%--
  Created by IntelliJ IDEA.
  User: DHL
  Date: 2020/4/21
  Time: 19:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/login" method="post">
    姓名:<input name="uname">
    密码:<input type="password" name="upass">
    <input type="submit" value="登录">
</form>
</body>
</html>

register.jsp
<%--
  Created by IntelliJ IDEA.
  User: DHL
  Date: 2020/4/21
  Time: 19:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/register" method="post">
    姓名:<input name="uname">
    密码:<input type="password" name="upass">
    确认密码:<input type="password" name="reupass">
    <input type="submit" value="注册">
</form>
</body>
</html>

main.jsp
<%--
  Created by IntelliJ IDEA.
  User: DHL
  Date: 2020/4/21
  Time: 19:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Beyond</title>
</head>
<body>
欢迎访问该系统!
</body>
</html>

index.jsp (目录在web下的)
<%--
  Created by IntelliJ IDEA.
  User: DHL
  Date: 2020/4/15
  Time: 18:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>My JSP 'index.jsp' starting page</title>
</head>
<body>
  HELLO!
    没注册的用户,请去  <a href="index/register">注册</a>
    已经注册的用户,<a href="index/login">登录</a>

  </body>
</html>

4 目录介绍

在这里插入图片描述

5.效果图

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_大木_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值