JavaEE
1、JavaWeb与Tomcat
·6425 字·13 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
JavaEE # Java EE(现在称为Jakarta EE)是Java平台的一个扩展,专注于开发和运行企业级应用程序。它提供了一组标准规范和API,用于构建可扩展、安全、可靠且高性能的分布式应用程序。Java EE涵盖了广泛的功能领域,包括Web应用程序开发、持久化、消息传递、事务管理、安全性等。
5、会话技术
·2672 字·6 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
会话技术 # HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的,服务器无法知道连接是否来自于同一个客户端。会话技术就是为了解决这个问题,通俗来讲,为了证明你就是你
3、不同IDE逆向生成
·924 字·2 分钟·
loading
·
loading
Java
JavaEE
Mybatis
逆向生成也就是使用插件,根据数据库表、字段、类型自动生成对应的Mybatis的Dao、Mapper、Entity
8、文件上传下载
·877 字·2 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
文件上传 # Fileupload组件 # 专门用于实现文件上传下载的免费组件
10、JSON
·2563 字·6 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
JSON # JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,但是也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
7、Listener
·598 字·2 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
Listener # 监听器,是JavaWeb三大组件之一,用于监听JavaWeb程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应事件
6、Filter
·1095 字·3 分钟·
loading
·
loading
Java
JavaEE
JavaWeb
Filter # 过滤器,是JavaWeb三大组件之一,是一个驻留在服务端的Web组件,可以截取用户端和资源之间的请求和响应信息,并对信息进行过滤 过滤器可以把对web资源的请求和响应拦截下来,做一些处理后再交给下一个过滤器或客户端。从而实现一些特殊的功能。 过滤器一般完成一些通用操作,比如:自动登录、权限控制、统一编码格式设置、敏感字符过滤等。 工作流程 #
3、pom.xml
·4488 字·9 分钟·
loading
·
loading
Java
JavaEE
Maven
POM # POM(项目对象模型)是 Maven 最基本,也是非常重要的一个概念。通常情况下,我们可以看到 POM 的表现形式是pom.xml,在这个 XML 文件中定义着关于我们工程的方方面面,当我们想要通过 Maven 命令来进行操作的时候,例如:编译,打包等等,Maven 都会从pom.xml文件中来读取工程相关的信息。
3、Axis2
·983 字·2 分钟·
loading
·
loading
Java
JavaEE
WebService
整合SpringBoot+Axis2 # 1、添加依赖 # <?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>top.ygang</groupId> <artifactId>axisdemo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> <version>2.2.0.RELEASE</version> </parent> <packaging>jar</packaging> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <axis2.version>1.7.8</axis2.version> </properties> <dependencies> <!-- spring-boot-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- axis2 --> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-spring</artifactId> <version>${axis2.version}</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-http</artifactId> <version>${axis2.version}</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-local</artifactId> <version>${axis2.version}</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-xmlbeans</artifactId> <version>${axis2.version}</version> </dependency> </dependencies> </project> 2、在resources下创建目录以及文件 # ServicePath/services/testService/META-INF/services.xml,其中只有目录testService的目录可变,其余目录都是固定
2、认证,加密,授权,缓存
·1602 字·4 分钟·
loading
·
loading
Java
JavaEE
Shiro
认证 # 1、Controller登录方法 # @RequestMapping("/login.do") public String login(User user,ModelMap map){ //获得一个主体对象 Subject subject = SecurityUtils.getSubject(); //将请求得到的用户名和密码放入一个令牌中 UsernamePasswordToken token = new UsernamePasswordToken(user.getUaccount(),user.getUpsw()); //调用主体对象的认证方法login,对令牌进行认证 try{ //触发Realm中doGetAuthenticationInfo() subject.login(token); Session session = subject.getSession(); User nwoLogin = (User)subject.getPrincipal(); session.setAttribute("nowLogin", nwoLogin); }catch(UnknownAccountException accountException){ map.put("ex", "账号不存在"); return "tologin.do"; }catch(IncorrectCredentialsException passwordExeption){ map.put("ex", "密码校验错误"); return "tologin.do"; } return "redirect:toMain.do"; } 2、Realm类中,doGetAuthenticationInfo方法进行登录认证 # //身份认证方法,需要在用户登录系统时触发 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { //通过方法形参arg0,获取封装了用户账号密码的令牌 UsernamePasswordToken token = (UsernamePasswordToken)arg0; //验证账号是否存在 String uaccount = token.getUsername(); User user = userService.selectByUaccount(uaccount); if(user == null){ //如果用户名不存在,返回null //则shiro底层返回了一个异常(UnknownAccountException) return null; } //验证密码是否正确 //第一个参数为,数据库查出的user对象,第二个参数为正确的密码,第三个参数为当前realm名 //如果密码不正确,该构造器会抛出异常(IncorrectCredentialsException) return new SimpleAuthenticationInfo(user,user.getUpsw(),getName()); } 加密 # 1、ShiroConfig类中,设置加密 # //设置加密类型(身份匹配器),以及方式 @Bean public HashedCredentialsMatcher credentialsMatcher() { HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher(); // 说密码的加密方式为MD5 (不可逆的加密方式,只能加密,不能解密) credentialsMatcher.setHashAlgorithmName("MD5"); // 针对MD5加密的信息,再加密1024次 credentialsMatcher.setHashIterations(1024); return credentialsMatcher; } //配置shiro框架中,用来完成身份认证,授权的域对象 @Bean public LoginAndAuthRealm loginAndAuthRealm() { LoginAndAuthRealm realm = new LoginAndAuthRealm(); // 给Realm中配置身份对比规则 realm.setCredentialsMatcher(credentialsMatcher()); return realm; } 2、修改Realm组件身份认证方法 # //身份认证方法,需要在用户登录系统时触发 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException { //通过方法形参arg0,获取封装了用户账号密码的令牌 UsernamePasswordToken token = (UsernamePasswordToken)arg0; //验证账号是否存在 String uaccount = token.getUsername(); User user = userService.selectByUaccount(uaccount); if(user == null){ //如果用户名不存在,返回null //则shiro底层返回了一个异常(UnknownAccountException) return null; } //验证密码是否正确 //获取当前用户名,创建盐值对象 ByteSource byteSource = ByteSource.Util.bytes(user.getUaccount()); //第一个参数为,数据库查出的user对象,第二个参数为正确的密码,第三个参数为盐值对象,第四个参数为当前Realm名称 //如果密码不正确,该构造器会抛出异常(IncorrectCredentialsException) return new SimpleAuthenticationInfo(user,user.getUpsw(),byteSource,getName()); } 3、控制层注册方法中,对密码进行MD5加密 # String pwd = new SimpleHash("MD5", 密码,盐值‘一般为用户名’, 加密次数‘1024’).toString();