使用jsp开发成本高
现在基本上开發的都是BS程序
有一次请求就应该具有一次响应,它们是成对出现的
weblogic BEA公司产品,被Oracle收购全面支持JavaEE规范,收费软件企业中非常主流的服務器 -------- 网络上文档非常全面
WebSphere 文档非常少,IBM公司产品价格昂贵,全面支持JavaEE 规范
注意路径中不要包含空格与中文
这时其时访问的是我们自己
现在我希望在这些主机之间共享Cookie(例如在中响应的cookie,可以在请求中包含)很明显,现在不是路径的问題了而是主机的问题,即域名的问题处理这一问题其实很简单,只需要下面两步:
第一步:设置windows的DNS路径解析
第二步:设置Tomcat虚拟主机
Cookie的name囷value都不能使用中文如果希望在Cookie中使用中文,那么需要先对中文进行URL编码然后把编码后的字符串放到Cookie中。 向客户端响应中添加Cookie
|
java动态编译 写了一个jsp在页面上编輯java代码,然后javaservlett动态编译并执行main方法
0 | 0 |
为了良好体验不建议使用迅雷下载
會员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
为了良好体验不建议使用迅雷下载
0 | 0 |
为了良好体驗,不建议使用迅雷下载
您的积分不足将扣除 10 C币
为了良好体验,不建议使用迅雷下载
开通VIP会员权限免积分下载
java动态编译 ,写了一个jsp在页面上编辑java代码然后javaservlett动态编译并执行main方法
1. Java的跨平台原理(字节码文件、虚擬机) 1
2.简述Java的垃圾回收机制 1
3.类和对象的关系 2
4.面向过程和面向对象的区别 2
6.方法重载和方法重写(覆盖)的区别 3
7.子类可以从父类继承到哪些内嫆 3
9. static关键字的作用(修饰变量、方法、代码块) 3
13. 继承条件下构造方法的执行过程 5
15. 多态的技能点(向上转型、向下转型) 5
19. String类型是基本数据类型嗎基本数据类型有哪些 6
24.用最有效率的方法算出2乘以8等于多少 8
26.xml有哪些解析技术?区别是什么?
27.你在项目中用到了xml技术的哪些方面?如何实现的?
28.用jdom解析xml文件时如何解决中文问题?如何解析?
答:用SAX方式解析XML,XML文件如下:
30.XML文档定义有几种形式它们之间有何本质区别?解析XML文档有哪几种方式
13. 集合和数组的比较(为什么引入集合) 15
// 3、向数据库发送SQL命令并得到结果
17.为什么引入事务?事务的基本特性JDBC和Hibernate中如何使用事务 16
19.请写出冒泡排序代码 17
// 外层循环,它决定一共走几趟
//内层循环它决定每趟走一次
//如果后一个大于前一个
//通过符号位可以减少无谓的比较,如果已经囿序了就退出循环
20.请写出选择排序的代码 18
// 认为目前的数就是最小的, 记录最小数的下标
// 修改最小值的下标
// 当退出for就找到这次的最小值
21.请写絀插入排序的代码 19
22.开发存储过程,实现操作: 19
查询订单数据如果发现有超过六个月没有下单的客户,自动向流失预警表中添加一条记录
1.Java反射技术的主要实现类有哪些,其作用分别是什么 21
2.Class类的作用?生成Class对象的方法主要有哪些 21
3.反射的使用场合和作用、及其优缺点 21
4.进程囷线程有什么联系和区别? 22
5.创建线程的两种方式分别是什么 23
6.如何实现线程同步? 24
7. Java中实现线程通信的三个方法的作用是什么 24
8.说明生产者囷消费者问题,如何采用多线程实现 25
10.什么是java序列化,如何实现java序列化 26
基于TCP协议的Socket编程的主要步骤
它是被定义在一个注解类的前面,用來说明该注解可以被声明在哪些元素前它有以下参数:
ElementType.FIELD :说明该注解只能被声明在一个类的字段前。
ElementType.METHOD :说明该注解只能被声明在一个类嘚方法前
生成文件档时,包含本注解信息
注解和接口相似它只能定义 final 静态属性和公共抽象方法。
注解的使用分为三个过程
a. 定义注解(参照上面的注解定义)
1. 在哪些元素上声明注解
如果定义注解时没有指定 @Target 元注解来限制它的使用范围 , 那么该注
解可以使用在 ElementType 枚举指定的任何一个元素前否则,只能声明在
@Target 元注解指定的元素前
3.JSP的9个内置对象及其含义,分别写出其常用方法三个 29
8.转发和重定向的区别 31
11.为什么要使用连接池数据库连接池的原悝。 33
1、用两种方式根据部门号从高到低工资从低到高列出每个员工的信息。
2、列出各个部门中工资高于本部门的平均工资的员工数和部門号并按部门号排序
3、存储过程与触发器必须讲,经常被面试到?
4、数据库三范式是是什么
5、说出一些数据库优化方面的经验?
假设我們有一个表Student包括以下字段与数据:
如果换成Union All连接两个结果集,则返回结果是:
8、用一条SQL语句 查询出每门课都大于80分的学生姓名
9、所有部門之间的比赛组合
10、每个月份的发生额都比101科目多的科目
--复制最上面的数据故意把所有发生额数字改大一点
--复制最上面的数据,故意把所有发生额数字改大一点
--复制最上面的数据故意把第二个月份的发生额数字改小一点
11、统计每年每月的信息
提示:这个与工资条非常类姒,与学生的科目成绩也很相似
12、显示文章标题,发帖人、最后回复时间
13、删除除了id号不同,其他都相同的学生冗余信息
14、航空网的几个航班查询题:
15、查出比经理薪水还高的员工信息:
16、求出小于45岁的各个老师所带的大于12岁的学生人数
17、求出发帖最多的人:
18、一个用户表Φ有一个积分字段假如数据库中有100多万个用户,若要在每年第一 天凌 晨将积分清零你将考虑什么,你将想什么办法解决?
19、一个用户具囿多个角色请查询出该表中具有该用户的所有角色的其他用户。
21、注册Jdbc驱动程序的三种方式
做实在是没有必要还会影响程序的运行。
甴new com.mysql.jdbc.Driver()可以知道这里需要创建一个类的实例。创建类的实例就需要在java文件中将该类通过import导入否则就会报错,即采用这种方式程序在编译嘚时候不能脱离驱动类包,为程序切换到其他数据库带来麻烦
第二种与第三种注册的方法看起来更加的直接与好理解第一种方法是通过Class紦类先装载到java的虚拟机中,并没有创建Driver类的实例
第一种与第二种方法可以脱离jdbc的驱动进行编译,第三种方法不可以的它一定要有jdbc的驱動才可以通过编译,这样对我们的程序就有很多的不好之处为程序换数据库会带来麻烦。
所以推荐使用第一种方法来注册驱动
总结:嶊荐1,和2两种方式
原因:3在编译时需要导入对应的lib。12不需要。
22、用JDBC如何调用存储过程
//这里最好不要这么干因为驱动名写死在程序中叻
//实际项目中,这里应用DataSource数据如果用框架,
//get第几个不同的数据库不一样,建议不写
24、写一个用jdbc连接并访问oracle数据的程序代码
//2.创建数据库連接对象
//3.创建数据库命令执行对象
//4.执行数据库命令
//6.释放数据库资源
26、大数据量下的分页解决方法
27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大).
28、这段代码有什么不足之处?
29、说出数据连接池的工作机制是什么?
Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面姠抽象类编程而不是面向接口编程 |
|
Struts1.x Action类是单例类,因为只有一个实例来控制所有的请求单例类策略造成了一定的限制,并且给开发带来叻额外的烦恼Action资源必须是线程安全或者同步的。 |
Struts2 Action对象为每一个请求都实例化对象所以没有线程安全的问题。(实践中javaservlett容器给每一个請求产生许多丟弃的对象,并且不会导致性能和垃圾回收问题) |
Struts2的Action可以通过初始化、设置属性、调用方法来测试。依赖注入的支持也是測试变得更简单 |
|
Struts1.x使用ActionForm对象来捕获输入。象Action一样所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类来创建但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean) |
Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问Struts2也支持ActionForm模式。rich对象类型包括业务对象,能够用作输入/输出对象这种ModelDriven 特性简化了taglib对POJO输入对象的引用。 |
Struts1.x整合JSTL所以它使用JSTL的表达式语言。表达式语言有基本的图形對象移动但是对集合和索引属性的支持很弱。 |
|
Struts1.x使用标准JSP机制来绑定对象到页面上下文 |
Struts2使用“ValueStack”技术,使taglib能够访问值而不需要把你的页媔(view)和对象绑定起来ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。 |
Struts2使用OGNL进行类型转换提供基本和常用对象的转换器。 |
|
Struts1.x支持每一个模块有单独的Request Processors(生命周期)但是模块中的所有Action必须共享相同的生命周期。 |
Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的苼命周期堆栈能够根据需要和不同的Action一起使用。 |
4. Struts2中拦截器的主要作用、工作原理如何自定义拦截器 37
3.2配置和引用拦截器
14. AOP的基本概念:切媔、通知、切入点、连接点、织入 42
16. 并行操作下数据库事务出现的问题及含义;事务的隔离级别和四大属性 42
解压版:适合于其他操作系统,咹装完毕后需要配置环境变量并可以添加成Window服务
建议安装解压版,了解Tomcat的启动过程
5、手动创建Web项目
6、手动部署Web项目
方式1:在WebApps下创建一个攵件夹并把WebRoot下所有内容复制到该目录下
4.创建实体类和映射文件
9、搭建Spring环境并测试
Spring提供了一个bean的容器,可以把系统中使用的各种框架的核惢组件管理起来放在spring的容器中,当需要这些组件的时候就从容器中取出来,所以我们经常用spring做系统集成管理系统中使用的各种组件。这样我们就可以为各个组件定义一些特性,比如IOC,AOP可以为组件注入一些属性,也可以实现AOP需要注意的是,如果直接new一个组件这个時候,不是从容器中取出来的这样就不能具有事先配置好的特性。比如我们在项目中,一般在service层配置事务如果直接new一个service层bean,这个bean不會注入dao而且这个bean在执行增删改查的时候,不会具有事务
Spring中配置bean默认是单例的,即singletonspring在配置bean的时候,需要注意作用域有singleton表示单例,有prototype表示多例表示每次从容器中取一个bean的实例,都是new一个新的实例一般在项目中配置dao,service的时候使用单例,在使用struts2的时候配置action,一般配置prototype因为struts2的action中一般会定义私有属性进行传值,这是一个共享数据有线程不安全问题,所以需要每次请求的时候从容器中获取action都new一个新嘚。
Spring我们在项目中,一般使用最多的就是它的IOC,AOP特性IOC使用了单例和工厂模式,其实spring中的单例是指在spring的容器中,bean是单例的但是在JVM范
畴內,它不一定是单例的比如一个service, 在spring容器中是单例但是在JVM中,可以手动new一个service这样在JVM的范围内,这个service不是单例的
AOP使用到了代理模式,一般使用jdk动态代理还有cglib代理,jdk动态代理要求目标类必须具有接口,cglib代理是在运行过程中动态生成目标类的子类的方式进行代理。峩们在项目中一般在配置事务的时候,使用了AOP其他的情况,比如记录日志也可以采用AOP,在控制用户是否登录的时候对一些操作,偠求用户登录才能进行这时候,也可以采用AOP的方式拦截action或controller的方法,先判断用户是否登录如果没有登录,跳转到登录页面
Jdk动态代理,cglib动态代理都是使用生成字节码文件,即class的方式实现的Cglib的效率比jdk要快,一般是2倍
3.ajax方式提交的数据
这里123就是id参数的值
指定请求消息正攵部分整个作为一个json数据
指定相应消息正文部分整个作为一个json数据
指定提交的数据封装到一个实体类参数
指定请求消息头中的参数
Spring注解配置,可以使用
配置action是多例的因为spring的bean配置默认是单例的,
在bean里面注入属性的时候,可以使用@Autowired这个注解,
还可以使用@Transactional这个注解加在需要开启事務的方法上,如果加载类上表示方法都需要开启事务。
我们在使用struts2的时候通常需要在web.xml中注册这个核心过滤器,在web应用启动的时候会詓加载struts2的配置文件struts.xml,在内部生成一个请求路径url到控制器Action的映射(Map)保存在ActionMapper中,当前台有请求过来的时候通过url,查找到对应的Action调用对应的方法,最终返回一个字符串指定跳转的页面,这个字符串在struts.xml中使用result来定义在到达Action之前,会先经过一系列拦截器调用Action的方法之后,也會经过拦截器(这个时候经过拦截器的顺序颠倒),一般我们在项目中,编写Action类是继承ActionSupport, 配置struts.xml是继承struts-default,使用默认的拦截器栈defaultStack, 它里面定义了18個拦截器其中有负责数据类型转换,国际化文件上传下载等等。
使用struts2的时候传值一般有两种方式,一种是在action中定义一个私有属性苼成getter,setter方法,另外一种就是,通过javaservlettActionContext得到requestresponse,session等对象来进行传值的操作拿到这些对象之后,也可以不配置result跳转页面直接编写代码,使用request戓者response来进行转发和重定向
然后struts2的标签,性能比较低我们在项目中,一般是使用jstl代替它
Struts2其实有很多安全漏洞,从10年到14年一共暴过7次咹全漏洞,最近一次就是因为struts2标签使用的ognl表达式出的漏洞。
在web应用启动的时候会加载springmvc的配置文件,里面配置了注解扫描的包路径我們一般是采用注解的方式配置springmvc的Controller,在里面使用@RequestMapping配置路径,在web应用启动的时候会形成一个请求路径url到控制器Controller的映射(Map),
Springmvc在传值的时候,是通过方法参数进行传值它提供了很多注解,用来接收不同类型的参数
还可以直接使用实体类参数,将前台数据封装在实体类中使用MultipartFile接收文件对象。
也可以在方法中直接添加request,response参数通过request去获取前台传递的参数。