java开发笔试题总结怎么写

java面试/笔试题

精品it资源网

1.JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对SpringMVC、Webwork2这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。

Struts2.0为其它框架提供了更好的集成。

使得与Spring的集成非常的容易。

2.Struts的工作流程:

在web应用启动时就会加载初始化ActionServlet,ActionServlet从

struts-config.xml文件中读取配置信息,把它们存放到各种配置对象

当ActionServlet接收到一个客户请求时,将执行如下流程.

-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;

-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;

-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;

-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;

-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;

-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;

-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

3.在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

4.(1)对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

(2)Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

(3)hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

(4)hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

5.原理:

(1).读取并解析配置文件

(2).读取并解析映射信息,创建SessionFactory

(3).打开Sesssion

(4).创建事务Transation

(5).持久化操作

(6).提交事务

(7).关闭Session

(8).关闭SesstionFactory

Hibernate的最大的好处就是简化数据库的操作,允许你的代码以对象模式来访问数据库内容,

比如通常我们找一个User的资料需要select出所需要的资料,而通过hibnate我们可以把这个User的资料作为一个对象来看待

,通过User.getName()或者User.getId()等操作来获得,这样就完全统一了上层JAVA或者C#等OO语言中对于数据库的非OO操作的不和谐了.

另外对于复杂的表和表之间的关联我们也不用去使用复杂的Select等SQL来操作,而使用对象可以方便获得,

比如多对多关系某用户属于的部门的名称,虽然底层数据库使用了3个表的主键关联操作,

但是我们可以通过User.getDep().getName()来简单的获得,这个就是持久化对象的好处了

(1)、spring能简化企业级开发,spring可以用简单的javabean来代替实现复杂的EJB。(大部分情况下)

(2)、spring是一个轻量级的IOC和AOP框架,可以spring的IOC实现松耦合,而作为一个AOP框架他又能分离系统服务,实现内聚开发

(3)、spring是非侵入式,基于spring的系统可以不依赖于spring的类。

良好的spring运用可以使程序代码清晰,容易维护,容易测试。

Spring是个很不错的框架。内部最核心的就是IOC了,

动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射

反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xmlSpring的配置

文件来动态的创建对象,和调用对象里的方法的。

Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象进行监督和控制(也就是

在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过

配置类达到的。

Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明

管理的(Spring根据这些配置内部通过反射去动态的组装对象)

要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。

Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式)

Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了

也就基本上掌握了Spring.

(1).springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

(2).DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

(3).DispatcherServlet请请求提交到目标Controller

(4).Controller进行业务逻辑处理后,会返回一个ModelAndView

(5).Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

(6).视图对象负责渲染返回给客户端。

java开发笔试题总结怎么写

java开发面试题

结果如下,写的有些复杂了

privatestaticListmergeTrays(Listlist){

Map<Integer,List>trayMap=newHashMap<>();

ListnewTray=newArrayList<>();

for(Traytray:list){

intid=tray.id;

Listgoods=tray.goods;

if(trayMap.containsKey(id)){

//将相同托盘id的商品放在一起

ListtempGoods=trayMap.get(id);

for(inti=0;i<goods.size();i++){

tempGoods.add(goods.get(i));

trayMap.put(id,tempGoods);

}else{

trayMap.put(id,goods);

for(Map.Entry<Integer,List>entry:trayMap.entrySet()){

intid=entry.getKey();

Listgoods=entry.getValue();

Map<Integer,Integer>goodsMap=newHashMap<>();

for(inti=0;i<goods.size();i++){

Goodsgood=goods.get(i);

if(goodsMap.containsKey(good.id)){

goodsMap.put(good.id,goodsMap.get(good.id)+good.count);

}else{

goodsMap.put(good.id,good.count);

ListnewGoods=newArrayList<>();

for(Map.Entry<Integer,Integer>goodEntry:goodsMap.entrySet()){

Goodsgood=newGoods();

good.id=goodEntry.getKey();

good.count=goodEntry.getValue();

newGoods.add(good);

Traytray=newTray();

tray.id=id;

tray.goods=newGoods;

newTray.add(tray);

returnnewTray;

本回答由网友推荐

java项目总结怎么写

把你负责的什么功能模块 写一下,项目主要功能是什么 适用于什么人群

java开发笔试题总结怎么写

这道JAVA题怎么写啊???

侵权联系与免责声明
1、本站资源所有内容均收集于网络,与本网站立场无关
2、本站所有资源收集于互联网,由用户分享,该帖子作者与老马学社网站不享有任何版权,如有侵权请联系本站删除
3、本站部分内容转载自其它网站,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
侵权联系邮箱:648765304@qq.com 本文链接:https://laomastudy.cn/3234.html
0

评论0

站点公告

老马学社因各项成本逐渐加大,优质课程资源不断增多,站内总资源价值上亿!!!!!明日将会恢复至原价999,今日只需499开通永久会员。网站始于2020年,稳定运行超过5年,每日更新,全站课程不加密,包含多个类目,总课程价值超过百万,比我们便宜的没有我们全,和我们一样全的没我们便宜,抓紧时间提升自己最重要
没有账号?注册  忘记密码?