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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)