会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132441个问题
Python 全系列/第七阶段:网页编程基础/JavaScript 19936楼
Python 全系列/第一阶段:Python入门/函数和内存分析 19937楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 19938楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 19939楼
JAVA 全系列/(旧的隐藏)第二十一阶段:百战商城项目(Spring Cloud最新架构)/百战商城项目 19941楼
JAVA 全系列/第六阶段:项目管理与SSM框架/RBAC实战 19942楼
Python 全系列/第十阶段:Flask百战电商后台项目/Flask百战电商后台项目 19945楼

帮忙看下是我数据库写错了吗。不管怎么改都是登录失败。、

shiro-jdbcini如下:

[main]
dataSou=com.mchange.v2.c3p0.ComboPooledDataSource
dataSou.driverClass=com.mysql.jdbc.Driver
dataSou.jdbcUrl=jdbc://127.0.0.1:3306/shiro
dataSou.user=root
dataSou.password=root
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$dataSou
securityManager.realm=$jdbcRealm

数据库代码:

CREATE TABLE `users` (
  `username` varchar(50) NOT NULL,
  `password` int(50) NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试代码:

package com.liyang.shiro1;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class Test2 {
    public static void main(String[] args) {


        //      1  解析shiro。ini
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-jdbc.ini");
        //  2获得工厂实例
        SecurityManager securityManager = factory.getInstance();

        //3 把SecurityManager对象设置到运行环境中
        SecurityUtils.setSecurityManager(securityManager);
//4通过 SecurityUtils获得主体对象subject
        Subject subject = SecurityUtils.getSubject();
        //5书写自己输入的账号和密码
        UsernamePasswordToken token = new UsernamePasswordToken("sxt", "123");
        //6验证密码
        try {
            subject.login(token);
            //7 通过方法判断是否登录成功
            if (subject.isAuthenticated()) {
                System.out.println("登录成功");
            }
        } catch (AuthenticationException e) {
            System.out.println("登录失败");
            //e.printStackTrace();
        }
    }

输出结果:

image.png

JAVA 全系列/第九阶段:权限控制与安全认证/Shiro(旧) 19946楼

Operate {
    List<Person> TelNoteRegex = TelNoteRegex()() {
        .= ArrayList<>()}
() {
    Menu menu = Menu()() {
        menu.searchMenu()item = ..menuItemValidate()(item) {
            :
                .searchByName(item):
                .searchByAge(item):
                .searchBySex(item):
                .searchByTelNum(item):
                .searchByAdd(item):
                .showAll():
                }
    }
}
() {
    (..size() == ) {
        System..println()}
    (i = i < .size()i++) {
        System..println(.get(i))}
}

(itemString str) {
    flag = (Person i : .) {
        (item == ) {
            (str.equals(i.getName())) {
                System..println(i)flag = }
        }
        (item == ) {
            (str.equals(i.getAge())) {
                System..println(i)flag = }
        }
        (item == ) {
            (str.equalsIgnoreCase(i.getSex())) {
                System..println(i)flag = }
        }
        (item == ) {
            (str.equals(i.getTelNum())) {
                System..println(i)flag = }
        }
        (item == ) {
            (str.equals(i.getAddress())) {
                System..println(i)flag = }
        }
    }
    (flag) {
        System..println()}
}

(item) {
    String name = ..nameValidate().cx(itemname)}

(item) {
    String age = ..ageValidate().cx(itemage)}

(item) {
    String sex = ..sexValidate().cx(itemsex)}

(item) {
    String telNum = ..telNumValidate().cx(itemtelNum)}

(item) {
    String address = ..addressValidate().cx(itemaddress)}
}


 老师,可以将TelNoteRegex在Operate类 直接实例化吗?

这样优化可以吗?

image.png

 这里我用switch ()  case 就会重复打印 每一遍循环未修改记录都会打印“无此人记录”,不知道怎么优化只能改用if


JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 19950楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637