Apache Struts

基于Web的Design Patterns应用程序

╄→гoц情女王★ 提交于 2020-02-27 00:56:58
已关闭 。 这个问题是基于意见的。 它当前不接受答案。 了解更多 。 想改善这个问题吗? 更新问题,以便通过 编辑此帖子 以事实和引用的形式回答。 去年 关闭。 我正在设计一个简单的基于Web的应用程序。 我是这个基于Web的领域的新手,我需要您提供有关设计模式的建议,例如如何在Servlet之间分配职责,创建新Servlet的条件等。 实际上,我主页上的实体很少,而与每个实体相对应,我们几乎没有添加,编辑和删除等选项。 早些时候,我为每个选项使用一个Servlet,例如Servlet1用于添加实体1,Servlet2用于编辑实体1,依此类推,这样我们最终拥有大量的Servlet。 现在,我们正在更改设计。 我的问题是,如何正确选择如何选择servlet的责任。 每个实体是否应该有一个Servlet,它将处理所有选项并将请求转发到服务层。 还是应该为整个页面设置一个servlet,它将处理整个页面请求,然后将其转发到相应的服务层? 同样,请求对象是否应该转发到服务层。 #1楼 我使用了 struts 框架,发现它相当容易学习。 使用struts框架时,网站的每个页面都会包含以下项目。 1)每次刷新HTML页面时,都会调用使用的操作。 该操作应在首次加载页面时填充表单中的数据,并处理Web UI与业务层之间的交互。 如果使用jsp页面修改可变的Java对象

(一)深入Java文件上传

拥有回忆 提交于 2020-02-26 21:36:12
1. Java文件上传概述 文件上传是应用程序中一个最普遍的功能,虽然简单,但是仍然值得我们深入研究。因此,为了能够对文件上传功能的共性(common property)进行归纳和总结,我在这里主要列举我们在Java Web开发的过程中经常使用的文件上传方式,并且基于这些常用的上传操作,封装一个简洁的、通用的文件上传组件,从而适用于大部分的Web开发环境。 说起文件上传,毫无例外,大部分使用Apache的commons-fileupload组件,本文也使用apache commons fileupload组件,详细的maven依赖和gradle依赖如下所示: <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>ommons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> // https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload compile group: 'commons

金三银四:一名已经拿到大厂offer程序员的饭后闲谈!

删除回忆录丶 提交于 2020-02-26 11:47:33
java 又到了茶余饭后的时间,想想写点什么,掐指一算,噢呦,快到3月份了,职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁员,代表的就是滴滴、京东这种大型互联网公司,已经官宣了。 即使这种情况下,我相信,3、4月份仍然会有一波离职、求职潮。 作为求职这来说,面试是一道坎,很多人会恐惧面试,即使是工作很多年的老鸟,可能仍存在面试的焦虑。 今天就来说一说 前言 在这里记录一下个人面试中遇到的一些印象较深的问题(有时候紧张不可能全部记得),主要是作为一种经验积累吧。 数据库类 作为后端开发,可以说数据库是重之又重。提问的比例也相当之大。所以这里先记录下这个。 如何快速导入10万条数据到MySQL数据库? 这个应该当时很紧张,居然半天说不出来。其实当时心里有一个答案了,就是存储过程。但是因为 平常开发基本上没用到过这东西,所以都不敢说了。。 网上还有有一些答案说批处理,通过sql文件进行导入等等,这个有时间可以去验证一番。 MySQL主从配置时,如果在主服务器修改某个数据,然后在从服务器中读取,因为延迟或者宕机的问题,导致没有读到数据,应该怎么办? 这个面试官很厉害啊,很多问题都是提一些开放性的东西,只让你提供思路,没有正确与否的标准 答案。 网上找了下,有以下两种技术可以做到主从断开,数据不一致的处理

框架升级填坑总结

眉间皱痕 提交于 2020-01-08 18:20:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 因公司业务发展,将jdk1.6升级至1.8,tomcat6升级至8。因老项目使用struts2.3.20版本,使用velocity模板渲染,需针对此框架整体升级至struts2.5.x,spring4.x。 注: struts2.5.x适用jdk1.7及以上。 1、更新项目maven包。struts2-core,struts2-json-plugin,struts2-spring-plugin及其余引用版本。删除原低版本引用,例如 :xwork-core ( 2.5版本 struts内置引用了新版 ),保证只有单一新版,防止冲突。 2、修改web.xml。删掉标红的ng. 。 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher. ng. filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> 3、修改struts.xml文件头部信息标红部位,修改为新的大版本数值,此处使用2.5.x,因此为2.5 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD

2019 年总结,2020 年计划

南笙酒味 提交于 2020-01-07 10:58:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 2019年总结 1、读书 读书情况良好,但是感觉领悟略少,只是停留在读的阶段了 2、结婚生子 这个完成的很好 3、涨工资1000元 这个没有达成 2020年计划 1、读书 《深入理解java虚拟机》第二版 《重构改善既有代码的设计》 《深入理解java虚拟机》第三版 《effect java》 《spring in action》 《spring boot实战》 《大型网站系统与java中间件实战》 《大型网站技术架构 核心原理与案例分析》 《深入理解计算机系统》 《算法图解》 《数据结构与算法分析》 《算法》 想看的有点多,不知道2020年能完成几本的深刻阅读,热门博客必须跟上,保质保量。 2、对java框架的彻底学习 spring、Struts2、hibernate、mybatis、springMVC、spring boot全部亲自敲一遍,搞懂。 3、老生常谈,涨工资2000 4、攒钱,2万元(太难了,2019年负6000元) 5、锻炼身体,减肥 2020年,我来了,希望今年也是元气满满,收获满满的一年,加油。 来源: oschina 链接: https://my.oschina.net/u/4006148/blog/3154205

不用 jsp 如何返回一个页面

百般思念 提交于 2020-01-07 03:20:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 答:通过将 文件 内容写出到 ServletOutputStream 中 例如: 在 struts中 Action: 说明:Action中方法的返回值 String 表示要 forward 的jsp页面,若要直接向浏览器写个页面,就直接返回void //导出用户列表 public void exportExcel(){ try { //1、查找用户列表 //2、导出 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/x-execl"); response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户列表.xls".getBytes(), "ISO-8859-1")); ServletOutputStream outputStream = response.getOutputStream(); userService.exportExcel(userService.findObjects(), outputStream); //流用完之后要关闭 if

使用时限制文件格式 <input type=“file”> ?

只谈情不闲聊 提交于 2020-01-06 15:32:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 当用户单击HTML中 <input type="file"> 元素中的 <input type="file"> 浏览”按钮时,我想限制可以从本机OS文件选择器选择的 <input type="file"> 。 我有一种感觉,这是不可能的,但我想知道是否 有 一个解决方案。 我只想保留HTML和JavaScript; 请不要使用Flash。 #1楼 如前面的答案中所述,我们不能限制用户仅选择给定文件格式的文件。 但是使用html中的file属性上的accept标签确实很方便。 至于验证,我们必须在服务器端进行。 我们也可以在js的客户端执行此操作,但这不是万无一失的解决方案。 我们必须在服务器端进行验证。 对于这些需求,我确实更喜欢struts2 Java Web应用程序开发框架。 借助其内置的文件上传功能,将文件上传到基于struts2的Web应用程序简直是小菜一碟。 只需提及我们希望在应用程序中接受的文件格式,其余所有内容都由框架本身的核心负责。 您可以在struts官方站点上进行检查。 #2楼 严格来说,答案是 否定的 。 开发人员 无法 阻止用户在本机OS文件选择对话框中选择任何类型或扩展名的文件。 但是, <input type = "file"> 的 accept

0103-springmvc的基本流程

喜你入骨 提交于 2020-01-06 15:27:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景 现在的it研发,已经从管理系统时代迈入了互联网系统时代。 页面开发已经从基于JSP+struts转变为为前后端分离的方式(springMVC + JS); 思想 MVC mvc框架不仅适用于java的开发,也适用于其他系统的开发,也包括前端,它的巨大成功在于它的理念。 核心流程和组件如下: springMVC基本流程 springMVC的核心是DispatherServlet,在它的基础上还有一些基础的组件。 流程图如下: DispatcherServlet.properties的默认配置 HandlerExecutioonChain 源码: 里面包含了一个控制器和多个拦截器列表; 定制springMVC的初始化 核心配置类:WebMvcConfigurer springBoot 通过属性文件进行配置,具体见:配置类 springMVC例子: thymeleaf 是一个面向java的html5优秀的页面模板,有丰富的标签语言和函数,使用springboot,基本都会选用Thymeleaf模板; 默认配置中resources中的templates目录就是用来放置html文件的; https://github.com/carterbrother/springbootpractice/tree/master

Java全栈开发

元气小坏坏 提交于 2019-12-25 15:27:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我刚开始接触Java的时候主要web端框架是Struts,那时还没有什么前后端分离,还不太流行MVVM框架。 作为一个Java程序员,懂得最多的还是如何用jsp+jquery+easyui来写一个OA系统,需要知道如何一些tomcat的配置,还有对于服务器的一些操作等等。那时的全栈工程师,就是Java+jsp+配置工程师,配置主要是Spring+Struts+ibatis的大量xml配置。套模板,写脚本,复制粘贴easy-ui上的组件代码等。以Java为主的后台系统开发体系中,基本没有专门的前端岗位,都是后端开发全包的这样一个状态。 那时候中小型公司都不会招专门的前端,如果真的需要一些比较复杂美观度要求比较高的页面,可能会将这部分开发工作外包出去,后端程序员再将写好的前端页面复制到项目中改成jsp,其中一些内容替换成jsp标签,在调整一下Javascript交互等等操作,一个项目就可以进入测试上线了。在当时,这就是大多数Java程序员的开发模式。 对于Struts中的一个Action成员变量多如牛毛,引用的地方不计其数,改一处动全身,再加上爆出一些严重的漏洞情况下。SpringMVC开始异军突起,注解式的路径映射,以方法为单位的请求处理,简洁明了的请求定义,开发易上手,易操作,很快的让人开始慢慢抛弃Struts

SpringMVC与Struts的区别

被刻印的时光 ゝ 提交于 2019-12-20 11:59:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ① SpringMVC的入口是Servlet,Struts2的入口是Filter,两者的实现机制不同。 ② SpringMVC基于方法设计,传递参数是通过方法形参,其实现是单例模式(也可以改为多例,推荐用单例),Struts2基于类设计,传递参数是通过类的属性,只能是多例实现,性能上SpringMVC更高一些。 ③ 参数传递方面,Struts2是用类的属性接收的,也就是在多个方法间共享,而SpringMVC基于方法,多个方法间不能共享。 来源: oschina 链接: https://my.oschina.net/u/3905833/blog/2252134