- 浏览: 562733 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (740)
- css (4)
- jquery (8)
- javascript (23)
- html (0)
- uml (0)
- 设计模式 (1)
- 开发工具 (14)
- json (4)
- struts 1.x (3)
- spring (3)
- hibernate (6)
- struts 2.x (17)
- JFreechart (0)
- j2se (48)
- jsp (9)
- flex (22)
- 找工作 (1)
- 技术杂谈 (18)
- 网络编程 (5)
- io流 (1)
- ORACLE (15)
- 报表 (3)
- extjs (11)
- jpbm (2)
- swing (5)
- jspereports (3)
- sql (1)
- linux (15)
- ps (1)
- storm (4)
- hbase (8)
- li (0)
- python (1)
- hive (3)
- 机器学习 (1)
- hdfs (1)
- elasticsearch (1)
- hadoop 2.2 (5)
- hadoop (1)
最新评论
-
Tristan_S:
这个有点意思
ASM -
starryskydog:
程序修改detail band部分的样式 如内容字体大小 ...
使用jasperReport实现动态表头 -
samwong:
Good, so usefule
使用YUI Compressor压缩CSS/JS -
gc715409742:
能够告诉我怎么在web项目中使用YUI Compressor? ...
使用YUI Compressor压缩CSS/JS -
JsonTeye:
您好! 我看你的代码,我现在也在做动态报表,实现功能由用户自己 ...
使用jasperreport动态生成pdf,excel,html
今天项目中遇到了positioned update are not supported这个异常
先看源代码吧
UserAction.java
public class UserAction extends ActionSupport{
private String password;
private User user;
private String validateCode;
private Boolean success;
private String msg;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getValidateCode() {
return validateCode;
}
public void setValidateCode(String validateCode) {
this.validateCode = validateCode;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Resource private UserService userService;
@SuppressWarnings("static-access")
public String list(){
String start = ServletActionContext.getRequest().getParameter("start");
String limit = ServletActionContext.getRequest().getParameter("limit");
Integer index = Integer.parseInt(start);
Integer pageSize = Integer.parseInt(limit);
String json = userService.convertAllUser(index,pageSize);
//输出json对象
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("Application/json;charset=GBK");
response.setHeader("Cache-Control","no-cache");
PrintWriter out = null;
try {
out = response.getWriter();
out.print(json);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(out!=null){
out.flush();
out.close();
}
}
return this.SUCCESS;
}
@SuppressWarnings("static-access")
public String update(){
HttpServletRequest request = ServletActionContext.getRequest();
String jsonArray = request.getParameter("data");
userService.saveAllUsers(jsonArray);
return this.SUCCESS;
}
@SuppressWarnings("static-access")
public String delete(){
HttpServletRequest request = ServletActionContext.getRequest();
String jsonArray = request.getParameter("data");
userService.deleteAllUser(jsonArray);
return this.SUCCESS;
}
@SuppressWarnings("static-access")
public String checkUser(){
String name = ServletActionContext.getRequest().getParameter("name");
System.out.println(name);
if(name!=null){
List<User> users = userService.getUserByName(name);
System.out.println("--------------------");
System.out.println(users.size());
System.out.println("--------------------");
if(users.size()!=0){
success = true;
msg = "用户名已存在";
}else{
success = false;
msg = "用户名可以注册";
}
}
System.err.println(msg);
System.out.println(success);
return this.SUCCESS;
}
@SuppressWarnings("static-access")
public String save(){
String roleId = ServletActionContext.getRequest().getParameter("role_id");
System.out.println(roleId);
Integer role_id = Integer.parseInt(roleId);
System.out.println(user);
System.out.println(password);
System.out.println(role_id);
if(user!=null){
userService.saveUser(user,role_id);
success = true;
msg = "保存成功";
}
return this.SUCCESS;
}
@SuppressWarnings("static-access")
public String checkLogin(){
String validate = (String) ActionContext.getContext().getSession().get("validateCode");
if(validate.equals(validateCode.trim())){
String userName = user.getUserName().trim();
String psd = user.getPassword().trim();
List<User> users = userService.getUserByName(userName);
if(users.size()!=0){
User user = users.get(0);
if(user.getPassword().equals(psd)){
success = true;
msg = "登录成功";
Role role = user.getRole();
List<ACL> acls = role.getAcls();
List<UserAllInfo> userInfos = new ArrayList<UserAllInfo>();
ArrayList<Module> modules = new ArrayList<Module>();
HttpSession session = ServletActionContext.getRequest().getSession();
for(ACL acl :acls){
Module module = acl.getModule();
UserAllInfo userInfo = new UserAllInfo(module.getId(),acl.getPermission(),user.getUserName(),module.getText());
userInfos.add(userInfo);
modules.add(module);
}
session.setAttribute("user", user);
session.setAttribute("acl", acls);
session.setAttribute("role", role);
session.setAttribute("modules", modules);
session.setAttribute("userInfo", userInfos);
}
}else{
success = false;
msg = "用户名不存在";
}
}else{
success = false;
msg = "验证码错误";
}
return this.SUCCESS;
}
}
UserService.java
@Service
public class UserService {
@Resource private UserDAO userDAO;
@Resource private RoleDAO roleDAO;
public List<User> getUsers(){
return userDAO.getUsers();
}
@SuppressWarnings({ "unchecked", "deprecation" })
public void saveAllUsers(String jsonUser){
JSONArray jsonArray = JSONArray.fromObject(jsonUser);
List<User> users = JSONArray.toList(jsonArray, User.class);
for(User user :users){
if(user!=null){
userDAO.update(user);
}
}
}
public String convertAllUser(Integer index,Integer pageSize){
List<User> users = userDAO.getUsers();
List<User> subUsers = null;
int count = users.size();
if((count%pageSize)<=0){
subUsers = users.subList(0,count);
}else if((count/pageSize)>index){
subUsers = users.subList(index, pageSize);
}else{
subUsers = users.subList(((count/pageSize)*pageSize),count);
}
String json="";
PropertyFilter filter = new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
// TODO Auto-generated method stub
if(name.equals("role"))return true;
return false;
}
};
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(filter);
if(users!=null){
json+="{root:";
json += JSONArray.fromObject(subUsers, config).toString();
json+=",totalProperty:"+count+"}";
}
return json;
}
@SuppressWarnings({ "unchecked", "deprecation" })
public void deleteAllUser(String jsonUser){
JSONArray jsonArray = JSONArray.fromObject(jsonUser);
List<User> users = JSONArray.toList(jsonArray, User.class);
for(User user :users){
int id = user.getId();
if((user!=null)&&(id!=0)){
userDAO.delete(id);
}
}
}
public void saveUser(User user,Integer role_id){
Role role = roleDAO.getRoleById(role_id);
user.setRole(role);
userDAO.save(user);
}
public List<User> getUserByName(String userName){
return userDAO.getUserByName(userName);
}
}
加红的地方是我下面要讲的地方
先说下出现这个异常的原因吧 由于Role role = roleDAO.getRoleById(role_id);在获取role对象时对象里的个别属性是延迟加载的 当中有一些对象是延迟加载的,这些对象并不是原role类中的属性,而是由cglib这个字节码生成器动态生成的对象。Hibernate在这个子类中添加了hibernateLazyInitializer等等的附加属性。由于jsonplugin并不区分类和动态生成的类,所以也会试图序列化hibernateLazyInitializer属性,从而导致出现上述的异常。
思路如下:
1、判断这个对象是否由cglib生成的。代码如下:
boolean isCreateByCGLIB = clazz.getName().indexOf("$$EnhancerByCGLIB$$") > -1 ? true : false;
如果此对象确实是由cglib生成的,那么我们取此对象的基类,这一步很关键,因为通过取得此对象的基类,我们就忽略了所有由cglib生成的跟hibernate相关的属性。
2、通过反射,取得此对象的所有继续于基类的属性。
3、通过反射,取得此对象的所有get方法器(这一步不能省,不然出来的属性就少了)。
4、输出json。
可是我们需要user的getter 和setter方法 那不能去掉这两个方法怎么办呢 那只有这样 在struts的配置文件中加一下配置
action name="user_*" class="userAction" method="{1}">
<result name="success" type="json">
<param name="excludeProperties">user</param>
</result>
</action>
在序列化action里属性时不序列化user这个属性 就可以了
发表评论
-
Exception starting filter struts2java.lang.NoClassDefFoundError: org/apache/comm
2011-10-28 08:49 1391遇到个启动Tomcat的错误。错误类型是: 严重: Ex ... -
Struts2 如何获取Request,Session对象
2010-10-19 10:34 1476Struts2 如何获取Request,Session对象 ... -
Jasperreport+ireport 实践操作及web应用
2010-08-08 09:10 1930Jasperreport+ireport 实践操 ... -
Struts2的基本流程
2010-08-03 11:17 1275Struts2的基本流程 大致上,Struts2框架由三个 ... -
动态表头
2010-08-02 23:19 1293最近在我公司drp(运营分销系统)开发中,需要大量报表,由于本 ... -
运行struts2时又出现问题了,本来是用通配符的,却出现了如下错误:
2010-08-02 18:14 1183运行struts2时又出现问题了,本来是用通配符的,却出现了如 ... -
Unable to instantiate Action(关于struts2.0异常)
2010-08-02 17:57 1611Unable to instantiate Action(关于 ... -
Jasper Report用户手册
2010-08-02 11:32 1465Jasper Report用户手册... i version1 ... -
iReport学习笔记——动态报表
2010-08-01 23:29 1750iReport学习笔记——动态报表 最近一直在研究jaspe ... -
动态生成报表
2010-08-01 22:43 1878项目里用到了jasperreport,平时都是用ireport ... -
JasperReport学习笔记2-创建简单的报表例子
2010-08-01 21:21 1942JasperReport学习笔记2-创建简单的报表例子 一, ... -
log4j error
2010-07-27 19:17 764在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日 ... -
log4j:WARN Please initialize the log4j system properly
2010-07-27 18:49 1680log4j:WARN Please initialize th ... -
Struts2的类型转换器
2010-07-27 17:53 830Struts2的类型转换器 一、概述 在B/S应用中,将字 ... -
Struts2的常量详解
2010-07-27 17:51 774Struts2的常量详解 通常struts2加载strut ... -
Unable to load configuration
2010-07-23 09:18 1086问题解决:Unable to load configurati ...
相关推荐
MySQL驱动程序是连接Java应用程序与MySQL数据库的关键组件。在Java编程中,我们通常使用JDBC(Java Database Connectivity)API来实现这种连接。JDBC提供了一组接口和类,使得Java程序能够与各种数据库进行交互,...
该资源为natsort-3.5.3.tar.gz,欢迎下载使用哦!
蓝桥杯c 蓝桥杯c C++个人备考复习资料
内容概要:本文详细介绍了如何使用FPGA进行无刷电机的旋变控制。首先讨论了旋变解码模块的设计,通过Verilog代码实现角度解算,并采用反正切查表法提高解算速度。接着探讨了PWM生成机制,展示了如何通过状态机实现高效的PWM波形生成,并强调了死区时间控制的重要性。然后深入讲解了闭环控制中的PID算法实现,特别是针对时钟对齐和防溢出处理进行了优化。此外,文章还涉及了旋变信号的硬核处理、CORDIC算法的应用以及速度观测器的设计。最后,通过对实际测试数据的分析,证明了FPGA方案相比传统DSP方案的优势,特别是在响应速度和角度解码精度方面。 适合人群:从事嵌入式系统开发、电机控制研究的技术人员,尤其是对FPGA感兴趣的工程师。 使用场景及目标:适用于需要高精度、快速响应的无刷电机控制系统设计。主要目标是通过FPGA的强大并行处理能力,实现更高效的旋变解码、PWM生成和闭环控制,从而提升系统的整体性能。 其他说明:文中提到多个具体的Verilog代码片段,帮助读者更好地理解和实现相关功能。同时,作者分享了许多实践经验,如调试过程中遇到的问题及其解决方案,有助于初学者少走弯路。
内容概要:本文详细介绍了利用粒子群优化(Particle Swarm Optimization, PSO)算法进行PID控制器参数整定的方法。首先阐述了传统PID参数整定方法如试凑法和Ziegler-Nichols法的局限性,然后重点讲解了PSO算法的基本原理及其在PID参数优化中的具体实现步骤。文中提供了多个实例,包括四旋翼无人机电机转速控制、直流电机转速控制以及一般工业控制系统的PID参数优化。通过与传统方法对比,展示了PSO算法在减少超调量、缩短响应时间和消除稳态误差方面的优越性能。此外,还讨论了适应度函数的选择、参数边界处理、惯性权重调整等关键技术细节,并给出了具体的Python和Matlab代码示例。 适合人群:自动化专业学生、从事自动控制相关工作的工程师和技术人员。 使用场景及目标:适用于各种需要精确控制的场合,特别是那些难以建立精确数学模型的复杂非线性系统。目标是提高控制系统的稳定性、快速性和准确性,降低人工调参难度。 其他说明:尽管PSO算法在大多数情况下表现出色,但在某些特殊应用场景(如嵌入式系统)中需要注意计算资源消耗问题。同时,在面对时变系统时,可能需要进一步研究改进算法以满足实时性要求。
内容概要:本文详细介绍了将西门子CPU224XP的三块功能板整合为单一PCB的设计过程和技术要点。首先,文章展示了如何利用FR4材料构建三明治结构的PCB,并通过KiCad进行精细的层叠配置。接着,讨论了BIN文件的生成方法,通过OpenOCD脚本实现固件的烧录。此外,文章还涉及了元件清单的自动化处理、电源模块的优化设计以及通信协议栈的重写。为了确保信号完整性和电磁兼容性,文中提供了具体的布线策略和热仿真脚本。最后,强调了生产过程中需要注意的事项,如贴片机设置、电源层铺铜和BIN文件的CRC校验。 适合人群:具备一定硬件设计和嵌入式开发经验的工程师,尤其是从事工业控制系统开发的技术人员。 使用场景及目标:适用于希望将多块功能板整合为单一高效PCB的设计项目,旨在提高系统的集成度、降低成本并增强性能。主要目标是掌握从PCB设计到固件烧录的全流程技术,确保最终产品能够满足严格的工业标准。 其他说明:文中提供的代码片段和设计思路不仅有助于理解和实施具体的技术细节,还可以作为类似项目的参考案例。
内容概要:本文详细介绍了ABB ACS510变频器在恒压供水系统中的应用及其优化配置方法。主要内容涵盖多泵轮换功能、固定变频泵模式、PID参数调整、触摸屏集成以及独立运行模式等方面的技术细节。文中不仅提供了具体的参数设置指导,还分享了许多实际调试经验和常见问题解决方案,如电流冲击减少、压力波动控制、通信协议配置等。 适合人群:从事自动化控制系统设计、安装和维护的技术人员,尤其是对恒压供水系统感兴趣的工程师。 使用场景及目标:适用于需要构建高效稳定的恒压供水系统的工程项目,旨在提高系统的稳定性和节能效果,降低维护成本。 其他说明:文章强调了实际操作中的注意事项和技术要点,对于理解和掌握ABB ACS510变频器的实际应用非常有帮助。此外,还提到了一些创新性的配置方法和优化技巧,有助于提升系统的性能表现。
内容概要:本文详细介绍了基于TMS320F28035芯片实现的同步机无传感滑膜观测器(SMO)和锁相环(PLL)模型的代码实现及其实际应用场景。首先,文章概述了SMO+PLL方案的工作原理,即通过滑膜观测器估计电机的反电动势,再由锁相环优化转速和位置的估计精度。接着展示了关键代码片段,包括电流采样与Clark变换、滑膜观测器核心算法、PLL算法以及坐标变换的细节。文中还特别强调了一些实用技巧,如Q格式运算提高效率、符号函数的实现方式、角度过零补偿等。此外,文章提到该代码已在实际项目中成功应用,具有较高的稳定性。 适合人群:从事电机控制领域的工程师和技术人员,尤其是对同步机无传感控制感兴趣的开发者。 使用场景及目标:适用于需要实现同步机无传感控制的工程项目,如伺服驱动、压缩机控制等。主要目标是帮助读者理解和掌握SMO+PLL方案的具体实现方法,从而应用于实际产品开发中。 其他说明:文中提及的一些细节,如Q格式运算、符号函数实现、角度过零补偿等,对于提高系统的性能至关重要。同时,作者提供了许多实践经验,有助于解决实际应用中的常见问题。
内容概要:本文详细介绍了利用MotorCAD进行32极36槽内转子永磁同步电机的设计过程,重点探讨了极槽配合选择、绕组设计、电磁场计算、磁钢布局以及散热系统的优化。通过合理的极槽配置(如32极配36槽),采用双层短距绕组和优化后的磁钢布局(如V型磁钢夹角92度),使得电机的功率密度达到5kW/kg,过载能力达2.5倍。同时,高效的冷却系统确保了电机在高负荷下的稳定运行,实测效率高达96.2%,过载至140%时仍能保持93.5%的效率。 适合人群:从事电机设计、电磁场分析及相关领域的工程师和技术人员。 使用场景及目标:适用于需要高功率密度和强过载能力的电动工程机械等领域,旨在帮助工程师理解和应用先进的电机设计理念和技术手段,提升产品性能。 其他说明:文中提供了详细的参数配置代码片段,便于读者复现设计过程。此外,还讨论了一些常见的设计挑战及其解决方案,如磁钢涡流损耗控制、绕组因数优化等。
内容概要:本文详细介绍了复盘的概念、操作手法、应用场景及其对企业及个人成长的重要性。复盘源自围棋术语,指对过去的经验进行回顾和反思,以从中学习和改进。文章阐述了复盘的五大核心要素:回顾目标、评估结果、分析原因、总结经验教训和提出改进建议。复盘不仅适用于个人成长,还广泛应用于企业管理和项目管理中,能够帮助企业提升执行力、改善决策流程、优化运营效率,并最终推动组织学习和发展。文中特别强调了复盘在军队、联想集团和英国石油公司(BP)中的成功实践。 适合人群:企业管理者、项目经理、团队领导者及希望提升自我反思和学习能力的职场人士。 使用场景及目标:①帮助个人和团队从过去的经历中吸取教训,避免重复错误;②通过系统的反思和总结,提升团队的协作效率和创新能力;③促进企业内部的知识共享和文化传播,构建学习型组织;④为企业战略调整提供数据支持,确保战略目标的有效落地。 其他说明:为了使复盘成为一种常态化的工作方法和习惯,组织应加强培训,培养专业的引导者,并将复盘融入日常管理流程中。此外,复盘的成功实施还需要营造开放、坦诚的文化氛围,鼓励全员积极参与。复盘不仅仅是回顾过去,更是面向未来的持续改进工具。
内容概要:本文详细介绍了将遗传算法与BP神经网络相结合用于短期电力负荷预测的方法及其优势。传统BP神经网络由于易陷入局部最优,预测误差较大,尤其是在节假日等特殊时段表现不佳。遗传算法通过引入全局搜索能力,优化了神经网络的权重初始化,显著提高了预测精度。文中展示了具体的编码、适应度计算、交叉变异等遗传算法步骤,并提供了Python代码实例。此外,作者分享了多个实战经验,如种群规模、迭代次数、变异概率等参数的设置技巧,以及如何避免过拟合等问题。 适合人群:从事电力系统相关工作的工程师和技术人员,尤其是对机器学习和优化算法有一定了解的人士。 使用场景及目标:适用于需要进行短期电力负荷预测的场合,如电网调度、工业用电管理等。主要目标是提高预测精度,减少因预测不准确带来的经济损失和调度困难。 其他说明:文中提到的技术不仅限于电力负荷预测,还可以应用于其他具有周期性和波动性的时序数据分析任务。同时,作者强调了在实际应用中需要注意的各种细节和潜在问题,如过拟合、过早收敛等。
# 雷电战机 (Raiden Space Shooter) A beautiful web-based space shooter game inspired by the classic Raiden series. ## Features - Smooth gameplay with keyboard controls - Multiple enemy types with different behaviors - Power-up system to enhance your ship - Beautiful visual effects - Score tracking and lives system ## How to Play ### Controls - Move: Arrow keys or WASD - Shoot: Space bar ### Power-ups - Green: Increases ship speed - Cyan: Increases fire rate - Red: Increases bullet damage - Yellow: Adds additional bullets ## Running the Game 1. Make sure you have Node.js installed 2. Navigate to the game directory 3. Run the server: ``` node server.js ``` 4. Open your browser and go to `http://localhost:3000` ## Development This game is built using vanilla JavaScript and HTML5
基于深度学习的系统
内容概要:本文详细介绍了如何使用ABAQUS进行路基及大坝分层填筑沉降模拟。首先讲解了材料定义,如使用Drucker-Prager模型模拟粘土,并强调了正确设置材料参数的重要性。接着讨论了分层施工的关键步骤,包括单元激活策略、接触面处理以及地应力平衡。文中还提供了多个Python脚本示例,用于自动化生成施工步、设置接触属性、提取沉降结果等。此外,文章分享了一些实用技巧,如避免常见错误、优化模型性能的方法,并通过实际案例展示了如何通过调整材料参数来更好地反映真实施工状况。 适合人群:从事土木工程仿真的工程师和技术人员,尤其是那些希望深入了解ABAQUS分层填筑模拟方法的人群。 使用场景及目标:适用于需要精确模拟路基和大坝分层填筑过程及其沉降行为的工程项目。主要目标是帮助用户掌握ABAQUS的具体操作流程,确保模拟结果的准确性,并提供解决常见问题的有效方法。 其他说明:文章不仅涵盖了理论知识,还包括大量实践经验,有助于读者将所学应用于实际工作中。同时提醒读者注意一些容易忽视的细节,如材料参数单位的一致性和接触面设置合理性等。
内容概要:本文详细介绍了西门子S7-200PLC(224XP型号)与MM420变频器之间的三种控制方式:数字量控制、模拟量控制以及USS通讯控制。首先,数字量控制通过PLC的开关量输出控制变频器的不同预设速度,涉及参数设置如P0701和P0702。其次,模拟量控制利用PLC自带的模拟量输出模块进行频率调节,需注意量程转换和参数P0756的设置。最后,USS通讯采用西门子专用协议实现复杂控制,强调了初始化参数、轮询机制和状态互锁的重要性。此外,文中还提供了关于MCGS触摸屏的应用技巧,如变量绑定和实时数据显示方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉西门子PLC和变频器产品的使用者。 使用场景及目标:适用于希望深入了解PLC与变频器联合控制系统的设计与实现的技术人员。主要目标是在实际工程项目中灵活运用这三种控制方式,提高系统的可靠性和效率。 其他说明:文中附带了详细的代码片段和调试建议,帮助读者更好地理解和实践相关技术。同时提醒读者关注参数设置的一致性和安全性,以避免潜在的风险。
本学习指南专为准备RH300考试,即红帽认证工程师(RHCE)考试的考生设计。书中详细介绍了考试内容,包括硬件和安装、配置和管理、内核服务、网络服务、X窗口系统、安全、路由器、防火墙、集群和故障排除。考试分为三个部分:调试、多项选择题和服务器安装及网络服务设置。书中还提供了硬件信息收集、系统配置、X窗口系统、Linux命令和工具、网络、系统管理和安全等方面的详细信息。
"基于MobileSensingSystem的电子硬件毕业设计资源整合,提供完整的硬件设计方案与实现方法。涵盖传感器选型、电路设计、嵌入式开发等关键技术,助力快速搭建移动传感系统。包含原理图、PCB设计、源码等实用资源,适合电子信息类专业学生参考使用。"(99字)
在端午节这个传统节日,我们可以通过搭建一个主题网站来弘扬和传承端午文化。本教程将带领大家使用 HTML、CSS 和 JavaScript 搭建一个简单的端午节主题网站。
流变学在结构工程中的应用:结构疲劳分析中的流变学考虑.zip