目前java的那些框架技术用的比较多

目前java的那些框架技术用的比较多,第1张

1,SpringMVC

在中国有一种说法“生姜仍旧又辛辣”,所以虽然SpringMVC已经发布了十多年,但它仍然强大有力,并且处于领先地位,具有绝对优势。在拥抱完整的MVC框架之后,Spring已经发展并且现在是面向Internet的应用程序的综合Java框架,为软件工程师提供了一个功能强大的工具包,用于Web应用程序开发和安全项目的应用程序配置。作为最受欢迎的程序员之一,Spring的完善生态系统提供了许多其他选项:RESTAPI或SOAPWeb服务,安全性(身份验证和授权,加密)等。此外,许多大公司选择使用SpringMVC,因此如果您在使用过程中遇到问题,将会有很多技术专家为您解答。

利弊

春天并非没有理由爬到顶端。它之所以成为最着名的Java框架,主要是因为:

1使用POJO简化测试数据的注入。

2增强模块性,使代码更具可读性。

3不同模块之间的分离。

4灵活的应用依赖注入(DI)。

虽然SpringMVC有很多文档可供参考,但它的学习曲线对新手Java开发人员来说太苛刻了,而且开发人员可能会遇到这样的情况:当他们遇到较少的引用时无法启动。另外,虽然SpringMVC的在线信息较多,但版本会有所不同。总的来说,SpringMVC是工程师最喜欢的框架之一。

2,Hibernate

虽然Hibemate不在RebelLabs的排行榜上,但它仍然是一个值得一提的Java框架。这种映射Java框架使用连续数据库访问 *** 作而不是高级对象处理来解决对象和关系不匹配的问题。每个企业应用程序都不同,因此Hibernate附带了一个强大的功能集,可以帮助后端开发人员微调数据访问层。这是一个高级ORM框架,允许您对Java对象(实体)执行数据库 *** 作。使用Hibernate Cache将数据从Java环境持久化到数据库是一个持久的概念。

目前Java编程语言最流行的7个框架,你了解多少?

利弊

Hibernate可以通过对原始代码进行微小更改来帮助您与任何数据库进行通信,从而弥合对象和关系之间的差距。除了这个优势,它还有:

1无论是Oracle,Db2还是MySQL,Hibernate都独立于DB。

2缓存机制优化了类似的查询。

3支持N + 1或延迟加载。

尽管Hibernate有许多优点,但它不允许多次插入,不支持对JDBC的某些查询,并且不适用于具有较少表的小规模项目。

3,Struts2

为了更详细地解释现代软件工程师广泛使用的Java框架,Qianfeng Wuhan Java Training的老师介绍了Struts2,它是ApacheStruts1的后续版本。 Struts2用于构建当代JavaEE Web应用程序。 Apache Software Foundation为开发人员提供了广泛的工具,用于创建企业级面向Web的应用程序,优化开发过程,甚至是后期维护,包括最终的优化过程和后期维护。如果您担心像广播门户这样的高负载系统,Struts将是您的最佳选择。

由于Struts2实现了Action类(普通的POJO对象),因此测试编写代码所需的工作量更少。使用框架API,耦合变得更容易,并有助于调整拦截器。

利弊

Struts2的最大特点是您不必重写或实现Action类,IT工程师为多个 *** 作创建重复代码不再是一个问题,因为拦截器将处理它。

Struts的最大缺点是它不够灵活。

目前Java编程语言最流行的7个框架,你了解多少?

瓦亚丁

Vaadin是现代开发人员在创建业务应用程序和使用GWT呈现页面时必须选择的流行框架之一。 Vaadin使用一种众所周知的基于组件的方法来快速适应浏览器的变化,从而减轻开发人员的负担。 Vaadin通过将更改传达给浏览器来消除开发人员的负担。丰富的UI组件,各种各样的小部件和控件,程序员可以随时随地构建一个很酷的应用程序。

利弊

在Java或HTML布局构造中,Vaadin提供了一种将数据绑定到MVC或MVP的方法。支持拖放和其他突出功能简化了Java应用程序的单页UI创建。

因为Vaadin需要将每个事件发送回服务器,或者移动应用程序的UI很慢。

5 JSF

作为JavaEE的一部分,Oracle支持JavaServerFaces。虽然这不是快速Java开发的最佳框架,但很容易开始使用Oracle的大量文档。如果你不离开JavaEE环境,JSF没有外部依赖,但它非常强大,它有一个丰富的库和工具(包括一个易于创建用户界面的工具集),无论你的应用程序有多复杂,它可以支持。

利弊

如上所述,JSF是JavaEE不可或缺的一部分。因此,开发人员可以利用IDE软件套件和业界领先供应商的高级支持。

但事情有两面,JavaServerFaces太大,所以没有web开发经验或不熟练的人可能很难掌握。

6,Grails

这种特殊的Web框架被认为是一种动态工具,可以提高工程师的工作效率。它具有唯一的API实际,合理的默认值和约定的配置示例。与Java的无缝集成使其成为全球许多程序员的最佳选择。 Grails具有许多强大的功能,例如基于Spring的依赖注入和各种插件,同时提供创建现代Web应用程序所需的一切。

目前Java编程语言最流行的7个框架,你了解多少?

利弊

Grails可以快速构建新项目,脚手架为编码人员节省了宝贵的时间。 Grails拥有一个包含900多种易于安装的插件的庞大库。 Grails是一个用于全栈开发的Java框架,它的对象关系映射涵盖了大量的功能,使其成为一个重量级的软件。

7,GoogleWebToolkit

GWT是一个免费的Java框架,允许用户创建和优化复杂的基于Web的应用程序。 GWT的软件开发工具包提供了核心Java API和小部件,可以在构建之后编译到JavaScript应用程序中。

利弊

使用GoogleWebToolkit,您可以获得单个代码库(Java中的浏览器和服务器端编程),从而简化了开发和调试过程。与其他技术的简单集成允许程序员在网页中嵌入GWT小部件。 Widget功能也可以在GWT的帮助下自定义。

但是,GWT不适用于纯HTML和后动态内容布局,因此无法满足网页设计师的需求。

问题:你需要清空并且关闭流对象。

我提供两种解决方案,并且解决了中文文件名乱码问题,兼容IE和火狐两种浏览器。

你可以选择。

方案一:代码写在一个jsp文件中。

下载请求页面传递过来的参数(当然具体看你要几个参数)

<rich:column>

<h:outputLink value="filejsp" rendered="true">

<f:param name="docId" value="#{itemiddocId}" / >

<f:param name="revNo" value="#{itemidrevNo}" />

<f:param name="attachmentNo" value="#{itemidattachmentNo}" />

<f:param name="filename" value="#{itemfileName}" />

<f:param name="storageName" value="#{itemstorageName}" />

<h:outputText value="#{itemfileName}" />

</h:outputLink>

</rich:column>

filejsp 文件代码:

<%@page language="java" contentType="application/octet-stream"pageEncoding="utf-8"%>

<%@page import="javaio,javautil,javanetURLEncoder"%>

<%responsereset();

String ATTACHMENTSTOREPATH = 已经上传了的附件的路径,自己应该知道?

int docId = 0;

int revNo = -1;

int attachmentNo = 0;

String filename = null;

String storageName = null;

try {

docId = IntegerparseInt(requestgetParameter("docId"));

revNo = IntegerparseInt(requestgetParameter("revNo"));

attachmentNo = IntegerparseInt(requestgetParameter("attachmentNo"));

//在火狐浏览器下载,含空格的文件名会出现异常,于是将空格用下划线代替

filename = (new String(requestgetParameter("filename")

getBytes("ISO-8859-1"),"UTF-8"))replace(" ", "_");

//将空格转化为下划线后重新对文件名进行UTF-8编码

filename = javanetURLEncoderencode(filename, "UTF-8"); storageName = requestgetParameter("storageName");

} catch (NumberFormatException nfe) {

}

if (docId >= 0 && revNo > -1 && attachmentNo >= 0) {

String filePath = null;

filePath = ATTACHMENTSTOREPATH + Fileseparator + storageName;

responsesetContentType("application/octet-stream");

//因为浏览器会将字符GBK编码,所以从数据库获得的UTF-8需要转换成GBK

//UTF-8一个汉字24位,GBK一个汉字16位

//Start UTF-8 to GBK(相对以前的程序主要就是修改了这里)

String str=filename;

StringBuffer sb = new StringBuffer();

for(int i=0; i<strlength(); i++) {

char c = strcharAt(i);

switch (c) {

case '+':

sbappend(' ');

break;

case '%':

try {

sbappend((char)IntegerparseInt(

strsubstring(i+1,i+3),16));

}

catch (NumberFormatException e) {

throw new IllegalArgumentException();

}

i += 2;

break;

default:

sbappend(c);

break;

}

}

String result = sbtoString();

result= new String(resultgetBytes("ISO-8859-1"),"UTF-8");

responseaddHeader("Content-Disposition", "attachment; filename=" + new String(resultgetBytes("GBK"),"ISO-8859-1"));

//End UTF-8 to GBK

BufferedOutputStream bos = null;

BufferedInputStream bis = null;

try {

bos = new BufferedOutputStream(responsegetOutputStream());

bis = new BufferedInputStream(new FileInputStream(filePath));

byte[] buffer = new byte[1024];

int n = -1;

while ((n = bisread(buffer)) > -1) {

boswrite(buffer, 0, n);

}

} catch (Exception e) {

eprintStackTrace();

} finally {

if (bis != null)

bisclose();

if (bos != null){

outclear(); out = pageContextpushBody(); bosclose(); } bis = null;

bos = null;

}

}

%>

此方案中如果你去掉:outclear();

out = pageContextpushBody();

报的错将和你的一模一样,不信你试试?

方案二:用Servlet下载,和你的是一样的。

还是页面过来的参数: <h:outputLink value="//">其中//是你调用的Servlet

<rich:column>

<h:outputLink value="//">

<f:param name="storage" value="#{liststorageName}" />

<f:param name="display" value="#{listdisplayName}" />

<f:param name="status" value="#{liststatus}" />

<h:outputText styleClass="input1_9pt_ul" value="#{listdisplayName}" />

</h:outputLink>

</rich:column>

public class PrFileServlet extends >

从jsp页面读取数据库 *** 作mysql变成问号是因为编码问题导致。

1架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码

解决方案:如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题

2在PHPMYADMIN或mysql-front等系统 创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码

解决方案:修改数据库编码,如果是数据库编码不正确: 可以在phpmyadmin 执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 。这个命令就是将test数据库的编码设为utf8

3创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码

解决方案:修改表的编码:

ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

这个命令就是将一个表category的编码改为utf8

4创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码

解决方案:修改字段的编码:

ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

这个命令就是将test表中 dd的字段编码改为utf8

5用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码

解决方案:如果是这种情况容易解决,只需检查一下页面,修改源文件的charset即可。如用户输入资料的JSP页面是big5码, 显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码

6字符集不正确

解决方案:要注意:

1>平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点

2>如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(A)将网站编码设为utf-8,这样可以兼容世界上所有字符, (B)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK

7JSP连接MYSQL数据库语句指定的编码不正确

解决方案:在JSP连接数据库的语句中,带上

useUnicode=true&characterEncoding=UTF-8&autoReconnect=true,

但是千万不要犯和我同样的错误哦。

8JSP页面没有指定数据提交的编码,就会造成乱码:

解决方案:这种乱码的情况,只需在页面开头加上requestsetCharacterEncoding("GBK"); 指定提交的即可。

using SystemDataSqlClient;

string str = "Data Source= //服务器名 ;Initial Catalog=NewsFBmod;uid=sa//用户名;pwd=652180//密码";//连接数据库

SqlConnection cn = new SqlConnection(str);

cnOpen();//打开数据库

cdConnection = cn;

cdCommandText = "select from 类型列表";//查询

SqlDataReader cmd = cdExecuteReader();//读取

SqlCommand cmd = new SqlCommand("update 用户列表 set 账号= '" + textBox1Text + "',密码='" + textBox2Text + "',性别='" + textBox3Text + "',用户类型='" + comboBox1Text + "' where 用户名='" + listBox1Text + "'", con);

cmdExecuteNonQuery(); //修改

SqlCommand cmd = new SqlCommand("delete from 用户列表 where 用户名='" + listBox1Text + "'", con);

cmdExecuteNonQuery(); //删除

string str3 = "insert into 用户列表(账号,密码,用户名,性别,用户类型) values('" + textBox1Text + "','" + textBox2Text + "','" + textBox4Text + "','" + textBox3 Text + "','"+comboBox1 Text +"')";

SqlCommand cmd = new SqlCommand(str3, con); //增加

以前使用 JSF 11 时,我知道 DataTableModel 可以定制的,默认它是用一个 index 来计算出当前需要从 mode 中拿哪条记录。 因此,你的 DataTableModel 呢想办法让计算 getRowCount的方法返回 (int) count / 2,这样,每次 get 时你返回一个对象由 {odd, even} 连个记录组成的一对。 setRowIndex 时每次 index 2 跳一格。

以后就用${itemodd} 和 ${itemeven} 来访问,或者每次 getRowData 时返回一个数组也行。这个 DataModel 的实现应该是通用的,如果3列每次 getRowCount 返回 (int) count / 3; seRowIndex() 时 index 3 每次跳2格,因为每次 getRowData() 时已经拿了index 3 +1 , + 2, +3 个一共 3个记录。

你的实现类应该是一个装饰的 DataModel,接受一个参数,它就是原始的 DataModel,去拿真实数据还是从原来的 Data Model 中按原来的方法拿 。只是我们在 getRowData 和 setRowIndex 上做手脚。

找个 javaxfacesmodelDataModel 的实现类的样例看看。

首先要弄清楼主项目是用struts1还是struts2  如果是1那只能用html标签

如:

如果是struts2  用s:标签

如:

再有如果在jsp页面用<%%>java代码的  都是垃圾页面 因为jsp只负责显示内容 而不是实现逻辑

希望对你有所帮助

以上就是关于目前java的那些框架技术用的比较多全部的内容,包括:目前java的那些框架技术用的比较多、求解!!!JSF实现下载功能老是报这个错,getOutputStream() has already been called for this response。、从jsp页面读取数据库 中文变成问号 mysql等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9400327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存