【J2EE基础学习】
文章平均质量分 63
j2ee的servlet+jsp的基础内容,以及部分相关知识点
喵学长
爱好动漫、游戏的二次元,Java工程师
展开
-
Java Web常用的几个开发方案
Java Web开发方案有多种可供选择,这里列举一些经典的开发模式,为Java Web的开发模式选择提供参考。1、JSP+JAVABEAN开发模式 特点:该模式将业务逻辑与页面表现进行分离,在一定程度上增加了程序的可调试性和维护性。 缺点:页面将控制与显示集于一身。 结论:简单,适合小型项目的快速构建与运行。2、JSP+Servlet+原创 2017-07-29 18:15:15 · 6140 阅读 · 0 评论 -
三层架构(引用自CSDN:http://blo…
1,什么是三层?UI(表现层):主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。 BLL:(业务逻辑层):UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。 DAL:(数据访问层):与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当原创 2016-11-30 15:56:56 · 3120 阅读 · 1 评论 -
shiro授权实现
授权实现Shiro支持三种方式实现授权过程:编码实现注解实现JSP Taglig实现1、基于编码的授权实现1.1基于传统角色授权实现当需要验证用户是否拥有某个角色时,可以调用Subject 实例的hasRole*方法验证。[java] view plain copySubject currentUser = Sec转载 2018-01-29 14:25:28 · 312 阅读 · 0 评论 -
Shiro框架中有三个核心概念:Subject ,SecurityManager和Realms。
2.1.1 SubjectSubject一词是一个安全术语,其基本意思是“当前的操作用户”。称之为“用户”并不准确,因为“用户”一词通常跟人相关。在安全领域,术语“Subject”可以是人,也可以是第三方进程、后台帐户(Daemon Account)、定时作业(Corn Job)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“转载 2018-01-19 09:26:13 · 8730 阅读 · 0 评论 -
【Shiro简介】(一)
1.1 简介Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shir转载 2018-01-18 11:11:40 · 185 阅读 · 0 评论 -
c3p0参数解释
#最常用配置#initialPoolSize:连接池初始化时创建的连接数,default : 3,取值应在minPoolSize与maxPoolSize之间c3p0.initialPoolSize=10#minPoolSize:连接池保持的最小连接数,default : 3c3p0.minPoolSize=10#maxPoolSize:连原创 2017-10-10 17:01:20 · 519 阅读 · 0 评论 -
脏读、不可重复读、幻读
锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 一般来说,锁可以防止脏读、不可重复读和幻觉读。 事务并发产生的问题: 脏读:一个事务读取到了另外一个事务没有提交的数据 事务1:更新一条数据转载 2017-09-21 16:31:40 · 344 阅读 · 0 评论 -
数据库连接池dbcp配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">原创 2017-08-11 14:51:39 · 3575 阅读 · 0 评论 -
数据库连接池c3p0配置c3p0-config.xml详解
3 30 1000 false <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么 属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试 使用。Default: null--> Test <!--获取连接失败将会引起所有等待连接池来获取连接的线原创 2017-08-11 14:48:29 · 6045 阅读 · 0 评论 -
开源的连接池技术DBCP与c3p0
开源的连接池技术一、概叙Sun公司约定: 如果是连接池技术,需要实现一个接口!javax.sql.DataSource; 二、连接池:DBCPC3P0三、DBCP连接池:3.1简介:DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应 3.2使用的jar包在系统中增加如下两个 jar 文件:Com原创 2017-08-11 14:46:29 · 3723 阅读 · 0 评论 -
JDBC驱动的四种类型
Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。JDBC驱动类型一、JDBC-ODBC桥JDBC-ODBC 桥 是sun公司提供的,是jdk提供的的标准API. 这种类型的驱动实际是把所有 JDBC的调用传递给ODBC ,再由ODBC调用本地数据库驱动代码.( 本地数据库驱动代码是指 由数据库厂商提供的数据库操作二原创 2017-07-17 10:20:53 · 5050 阅读 · 0 评论 -
jdbc试题
(1)接口Statement中定义的execute方法的返回类型所代表的含义?有无ResultSet返回(2)jdbc中那个对象可执行异构的sql语句?Statement(3)jdbc中那个对象可执行同构的sql语句?PreparedStatement原创 2017-07-18 07:37:56 · 4008 阅读 · 0 评论 -
批处理
1. 批处理很多时候,需要批量执行sql语句!需求:批量保存信息! 设计:AdminDaoPublic void save(List // 目前用这种方式// 循环// 保存 (批量保存)} Public void save(Admin admin ){// 循环// 保存}技术:|-- Statement批处理相关方法原创 2017-05-20 11:48:16 · 3557 阅读 · 0 评论 -
存储过程调用
1. 存储过程调用 -- 存储过程-- 定义分隔符DELIMITER $$CREATE PROCEDURE proc_login()BEGIN SELECT * FROM admin;END $$ -- 调用CALL proc_login;public class App_cal原创 2017-05-20 11:45:38 · 3397 阅读 · 0 评论 -
预编译sql处理(防止sql注入)
1. 预编译sql处理(防止sql注入)-- 创建数据库CREATE DATABASE jdbc_demo DEFAULT CHARACTER SET utf8;i-- 创建表USE jdbc_demo;CREATE TABLE admin( id INT PRIMARY KEY AUTO_INCREMENT, userName VARCHA原创 2017-05-20 11:43:58 · 6614 阅读 · 0 评论 -
JDBC - 删除表
删除表 stmt = conn.createStatement(); String sql = "DROP TABLE REGISTRATION "; stmt.executeUpdate(sql);原创 2017-05-10 11:56:03 · 5237 阅读 · 0 评论 -
JDBC - 创建表
创建表 String sql = "CREATE TABLE REGISTRATION " + "(id INTEGER not NULL, " + " first VARCHAR(255), " + " last VARCHAR(255), " +原创 2017-05-10 11:54:26 · 4724 阅读 · 0 评论 -
JDBC - 删除数据库
删除数据库 stmt = conn.createStatement(); String sql = "DROP DATABASE STUDENTS"; stmt.executeUpdate(sql);原创 2017-05-10 11:53:14 · 3396 阅读 · 0 评论 -
JDBC-创建数据库
JDBC创建数据库 在执行下面的例子前,请确保有以下:必须具有管理员权限才能在给定的模式创建一个数据库。要执行下面的示例中,需要更换实际用户名和密码,用户名和密码。MySQL数据库正在启动和运行。所需步骤:有以下步骤需要创建一个新的数据库使用JDBC应用程序:导入包. 需要包括软件包包含了数据库编程所需的JDBC类。大多数情况下,使用导入的java.sql.*就原创 2017-05-10 11:47:21 · 5861 阅读 · 1 评论 -
java.util.Date和java.sql.Date的区别和相互转化
Java.util.Date是在除了SQL语句的情况下面使用的。java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它们都有getTime方法返回毫秒数,自然就可以直接构建。 java.util.Date 是 java.sql.Date 的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为PreparedSt转载 2017-04-22 14:32:48 · 2809 阅读 · 0 评论 -
关于Oracle与MySQL官方jdbc的一些区别
Jdbc驱动:1、Mysql:驱动下载地址:http://dev.mysql.com/downloads/connector/j/驱动类型:TYPE4最新版都声称支持JDBC4.0 标准驱动注册名称:com.mysql.jdbc.Driver用于主从读写分离驱动注册名称:com.mysql.jdbc.ReplicationDriver2、Oracle:驱原创 2017-04-15 16:09:52 · 3345 阅读 · 0 评论 -
CallableStatement执行存储过程
CallableStatement执行存储过程/** * 使用CablleStatement调用存储过程 * @author APPle * */public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL pro_findById(4); */ @Test public void test1(){ Connection co原创 2017-03-29 21:09:13 · 2858 阅读 · 0 评论 -
PreparedStatement vs Statment
1)语法不同:PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql2)效率不同: PreparedStatement可以使用sql缓存区,效率比Statment高3)安全性不同: PreparedStatement可以有效防止sql注入,而Statment不能防止sql注入。推荐使用PreparedStatement原创 2017-03-29 21:02:13 · 2745 阅读 · 0 评论 -
使用PreparedStatement执行sql语句
使用PreparedStatement执行sql语句public class Demo1 { /** * 增加 */ @Test public void testInsert() { Connection conn = null; PreparedStatement stmt = null; try { //1.获取连接 conn = JdbcUtil.原创 2017-03-29 20:59:23 · 4974 阅读 · 0 评论 -
使用Statement执行sql语句
3.1执行DDL语句/** * 执行DDL语句(创建表) */ @Test public void test1(){ Statement stmt = null; Connection conn = null; try { //1.驱动注册程序 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接原创 2017-03-29 20:57:20 · 7673 阅读 · 0 评论 -
JDBC接口核心的API
JDBC接口核心的APIjava.sql.* 和 javax.sql.* |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。 |- connect(url, properties): 连接数据库的方法。 url: 连接数据库的URL原创 2017-03-29 20:52:39 · 2775 阅读 · 0 评论 -
jdbc概叙
1.1 之前操作数据 1)通过mysql的客户端工具,登录数据库服务器 (mysql -u root -p密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行1.2 什么是jdbc? 使用java代码(程序)发送sql语句的技术,就是jdbc技术!!!!1.3 使用jdbc发送sql前提登录数据库服务器(连接数据库服务器)数据库的IP地址原创 2017-03-29 20:49:38 · 2611 阅读 · 0 评论 -
java:jdbc连接数据插入中文数据乱码解决办法:
一下以mysql为例:通过JDBC操作数据库表时,如果记录中有中文,可能会碰到乱码的问题。主要原因是字符编码(characterEncoding)不正确,不外乎以下几个方面:1、在数据库服务器上创建表格时没有选择支持中文的编码方式2、建立JDBC连接时没有指明支持中文的编码方式解决办法:1、创建数据库表时,选择character与collation时原创 2017-02-25 15:44:01 · 3599 阅读 · 0 评论 -
自定义连接池
程序实现思路:1. 指定“初始化连接数目” 【3】(App启动时候,就执行创建!)2. 指定“最大连接数” 【6】3. 指定“当前使用连接个数” 【不能超出最大连接数】代码实现:1. MyPool.java 连接池类, 2. 指定全局参数: 初始化数目、最大连接数、当前连接、 连接池集合3. 构造函数:循环创建3个连接4. 写一个创建连接的方法5. 获取原创 2016-12-30 21:32:35 · 2811 阅读 · 0 评论 -
简单使用JFinal(三)-JFinalConfig
JFinalConfig2.1 概述基于 JFinal的 web 项目需要创建一个继承自 JFinalConfig类的子类,该类用于对整个 web项目进行配置。JFinalConfig 子类需要实现五个抽象方法,如下所示:public class DemoConfig extends JFinalConfig{ publicvoid configConsta原创 2017-09-22 16:38:56 · 1335 阅读 · 0 评论 -
简单使用JFinal(二)-JFinal开发步骤
JFinal开发步骤1.1 放入 JFinal 库文件ü jfinal-xxx.jar jfinal核心jar包ü jetty-server-8.1.8.jar 用来支持无需额外安装 tomcat jetty等 web server 1.2 添加核心过滤器到 web.xmljfinalcom.jfinal.core.JFinalFilterconfigC原创 2017-09-22 16:35:36 · 1227 阅读 · 0 评论 -
简单使用JFinal(一)-JFinal简介
JFinal简介JFinal 是基于Java语言的极速WEB + ORM 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java 语言所有优势的同时 再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友。JFinal特点Ø MVC 架构,设计精巧,使用简单Ø 遵循原创 2017-09-22 16:34:27 · 870 阅读 · 0 评论 -
Ehcache详细解读
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考原创 2017-09-02 09:39:10 · 460 阅读 · 0 评论 -
Ehcache详细解读
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考转载 2017-09-02 09:35:44 · 195 阅读 · 0 评论 -
java中的日志组件-log4j
1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台、文件、CUI组件、NT的事件记录器;还可以控制每一条日志输出格式。此外,通过定义日志信息的级别,能够非常细致地控制日志的输出,最令人感兴趣的是,这些功能可以通过一个配置文件来灵活进行配置,而不需要修改应程序代码。在应用程序中输出日志有3个目转载 2017-09-19 16:06:38 · 574 阅读 · 0 评论 -
Apache的BeanUtils组件学习
1、注意点1.1、使用BeanUtils组件必须引入BeanUtils核心包,还需要引入日志支持包1.2、BeanUtils的copyProperty与setProperty的实现原理-反射1.3、对于基本基本数据类型,会自动进行类型转换1.4、BeanUtils的populate拷贝map数据到对象中时,map中的key要与javabean的属 性名称一致1.5、可以与ser原创 2017-09-03 10:51:21 · 720 阅读 · 0 评论 -
jsp开发中cannot resolve taglib with uri的解决方法
IDE错误提示:cannot resolve taglib with uri http://Java.sun.com/jsp/jstl/fmt 或者 cannot resolve taglib with uri ...或者org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/cor原创 2017-08-01 22:22:19 · 9907 阅读 · 0 评论 -
过滤器Filter
1、基本概念(3W1H: why, what, where,how) 1.1、为什么需用到过滤器?A、项目开发中,经常会涉及到重复代码的实现!注册 ----à Servlet 【1. 设置编码】 ----à JSP修改 ----àServlet 【1. 设置编码】 ---à JSP其他,如判断用户是否登陆,只有登陆才能有操作权限!涉及到重复判断: 获取se原创 2017-08-14 14:56:46 · 3370 阅读 · 0 评论 -
过滤器拦截指定的请求与指定的类型<url-pattern>与<dispatcher>
/* 表示拦截所有的请求filter-mapping>filter-name>hello_filter2filter-name>url-pattern>/*url-pattern>filter-mapping> 默认拦截的类型:(直接访问或者重定向)REQUEST拦截转发: FORWARD拦截包含的页面(RequestD原创 2017-08-14 14:58:18 · 9791 阅读 · 0 评论 -
Filter共性问题
共性问题:1. 过滤器:方法参数没有自动命名,说明没有关联源码--à 关联tomcat或servlet源代码2. 连接池: 多刷新几次,报错!-à 连接没关QueryRunner qr = new QueryRunner();qr.update(con,sql);// 这里con一定要关闭-à 注意:dataSource 确定一个项目创建一次QueryRunne原创 2017-08-14 15:31:53 · 3387 阅读 · 0 评论