SpringMVC使用注解实现登录功能

2023-01-21 0 1,281

本文实例大家分享SpringMVC使用注解实现登录的具体代码,供大家参考,具体内容如下

一、使用Component\\Controller\\Service\\Repository四大注解类:

  • @Component 是通用标注
  • @Controller 标注 web 控制器
  • @Service 标注 Servicec 层的服务
  • @Respository 标注 DAO层的数据访问

这些注解都是类级别的,可以不带任何参数,也可以带一个参数,代表bean名字,在进行注入的时候就可以通过名字进行注入了。

二、@Resource和@Autowired注解的异同

  • @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false

例如:@Autowired(required=false),如果我们想使用名称装配可以结合@Qualifier注解进行使用

  • @Resource,默认安装名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找 ,如果注解写在setter方法上默认取属性名进行装配 。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

三、其他注解类 

(1) PathVariable注解类

@RequestMapping注解中使用占位符的情况下,需要使用@PathVariable注解指定占位符参数

(2) RequestParam注解类

表单提交数据时,可以通过这个注解来解决request.getParameter("uname")

(3) CookieValue注解类

如果要保存字符串数据,可以使用这个注解

(4) SessionAttributes注解类 

如果希望在多个请求之间公用某个模型属性数据,则可以在控制器类标注一个@SessionAttributes,SpringMVC会将模型中对应的属性暂存到HttpSerssion中除了SessionAttributes,还可以直接用原生态的request.getSession()来处理

(5) ResponseBody注解类

用于将Controller的方法返回的对象,通过适当的HttpMessageConverter(转换器)转换为指定格式后,写入到Response对象的body数据区;  返回如json、xml等时使用

(6)RequestHeader注解类

@RequestHeader注解,可以把Request请求header部分的值绑定到方法的参数上

四、应用注解来实现登录

 (1)、创建工程如下:

SpringMVC使用注解实现登录功能

 (2)、配置文件pom.xml(主要是修改:dependencies的内容)

<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>springmvc</groupId>
    <artifactId>springmvc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name />
    <description />
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1-b05</version>
        </dependency>
 
        <!-- jackson start -->
 
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.1.0</version>
        </dependency>
        <!-- jackson end -->
    </dependencies>
    <build>
        <finalName>springmvc</finalName>
        <sourceDirectory>${basedir}/src</sourceDirectory>
        <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
        <resources>
            <resource>
                <directory>${basedir}/src</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webappDirectory>${basedir}/WebRoot</webappDirectory>
                    <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

(3)spring-mvc.xml文件

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:p=\"http://www.springframework.org/schema/p\" 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\"
    xmlns:util=\"http://www.springframework.org/schema/util\"
    xsi:schemaLocation=\"http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-3.0.xsd
        \">
    <!-- 自动扫描 com.hlx 包下面的所有组件(使用了springmvc注解)-->
    <context:component-scan base-package=\"com.hlx.*\" />
 
   <bean
        class=\"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter\">
        <property name=\"messageConverters\">
            <util:list >
                <!-- 配置处理JSON数据 -->
                <ref bean=\"mappingJackson2HttpMessageConverter\" />
            </util:list>
 
        </property>
    </bean>
 
 <!-- 读写JSON对象 -->
  <bean id=\"mappingJackson2HttpMessageConverter\" class=\"org.springframework.http.converter.json.MappingJackson2HttpMessageConverter\">
    <property name=\"supportedMediaTypes\">
     <list>
      <value>text/html;charset=UTF-8</value>
     </list>
    </property>
  </bean>
  
</beans>

(4)web.xml文件同前一个springmvc中的文件相同

(5)JSP页面(省略) 

(6)创建src/main/java 下 bean,dao.service,controller 

package com.hlx.bean;
 
public class User {
    private String uname;
    private String upass;
 
    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 User() {
        super();
    }
 
    public User(String uname, String upass) {
        super();
        this.uname = uname;
        this.upass = upass;
    }
 
    @Override
    public String toString() {
        return \"User [uname=\" + uname + \", upass=\" + upass + \"]\";
    }
 
    
}
package com.hlx.dao;
 
import org.springframework.stereotype.Repository;
 
import com.hlx.bean.User;
 
@Repository
public class UserDao {
 
    /**
     * 根据用户名来查询
     * @param uname
     * @return
     */
    public User selectByName(String uname) {
        if (\"admin\".equals(uname)) {
            User user = new User(\"admin\", \"aaa\");
            return user;
        }
        return null;
    }
 
}
package com.hlx.service;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
 
import com.hlx.bean.User;
import com.hlx.dao.UserDao;
 
@Service
public class UserService {
 
    @Resource
    private UserDao userDao;
 
    /**
     * 登录处理
     * @param uname
     * @param upass
     * @return
     * @throws Exception
     */
    public User doLogin(String uname, String upass) throws Exception {
        // 判断
        if (uname == null || \"\".equals(uname)) {
            throw new Exception(\"用户名不能为空!\");
        }
        if (upass == null || \"\".equals(upass)) {
            throw new Exception(\"密码不能为空!\");
        }
 
        User user = userDao.selectByName(uname);
 
        if (user == null) {
            throw new Exception(\"用户名不存在!\");
        }
 
        if (!user.getUpass().equals(upass)) {
            throw new Exception(\"密码不正确!\");
        }
 
        return user;
 
    }
}
package com.hlx.controller;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
 
 
import com.hlx.bean.User;
import com.hlx.service.UserService;
 
@Controller
@SessionAttributes(\"user\") //保存user对象
public class UserController {
 
    //业务层
    @Resource
    private UserService userService;
    
    @RequestMapping(\"login\")
    public String toLoginPage(){
        return \"jsp/login.jsp\";
    }
    /**
     * 
     * @param uname 表单传过来的参数
     * @param upass 
     * @param request  请求对象
     * @return
     */
    @RequestMapping(value=\"dologin\",method=RequestMethod.POST)
    public String doLogin(@RequestParam String uname,@RequestParam String upass,HttpServletRequest request,ModelMap map){
        try {
            //调用方法
         User user=userService.doLogin(uname,upass);
         
         //存入user
         map.put(\"user\", user);
         ///
         
        } catch (Exception e) {
            // TODO: handle exception
            request.setAttribute(\"error\", e.getMessage());  //提示错误消息
            return \"jsp/login.jsp\";  //返回登录页面
        }
        return \"jsp/success.jsp\";
    }
    
    /**
     * 退出
     * @return
     */
    @RequestMapping(\"dologout\")
    public String doLogout(SessionStatus status){
        //清空session
        status.setComplete();
        //返回登录页面
        return \"jsp/login.jsp\";
    }
    
}

效果:

SpringMVC使用注解实现登录功能

package com.hlx.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
import com.hlx.bean.User;
 
@Controller
public class JSONController {
 
    @ResponseBody
    @RequestMapping(\"/getJson\")
    public User getUserinfo(){
        User user = new User(\"mike\", \"123456\");
        return user;
    }
}

效果:

SpringMVC使用注解实现登录功能

package com.hlx.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
import com.hlx.bean.User;
 
@Controller
public class PathVariableControler {
    
    @ResponseBody
    @RequestMapping(\"/pathvariable/{uname}\")
    public User test1(@PathVariable String uname){
        User user = new User();
        user.setUname(\"john\");
        return user;
    }
    @ResponseBody
    @RequestMapping(\"/pathvariable2/{intval}\")
    public User test1(@PathVariable Integer intval){
        User user = new User();
        user.setUname(intval + \"\");
        return user;
    }
 
}

效果:

SpringMVC使用注解实现登录功能

注意:这里是数字

SpringMVC使用注解实现登录功能

注意:这里只能是数字,不能字符串,否则找不到页面!

SpringMVC使用注解实现登录功能

总结:  

应用了四大注解类Component、Controller、Service、Repository;掌握PathVariable,RequestParam注解类

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 SpringMVC使用注解实现登录功能 http://www.20zxx.cn/463931/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务