1封装json

在Action中以传统方式输出JSON数据

这一点跟传统的Servlet的处理方式基本上一模一样,代码如下

  1. public void doAction() throws IOException{
  2. HttpServletResponse response=ServletActionContext.getResponse();
  3. //以下代码从JSON.java中拷过来的
  4. response.setContentType("text/html");
  5. PrintWriter out;
  6. out = response.getWriter();
  7. //将要被返回到客户端的对象
  8. User user=new User();
  9. user.setId("123");
  10. user.setName("JSONActionGeneral");
  11. user.setPassword("JSON");
  12. user.setSay("Hello , i am a action to print a json!");
  13. JSONObject json=new JSONObject();
  14. json.accumulate("success", true);
  15. json.accumulate("user", user);
  16. out.println(json.toString());
  17. // 因为JSON数据在传递过程中是以普通字符串形式传递的,所以我们也可以手动拼接符合JSON语法规范的字符串输出到客户端
  18. // 以下这两句的作用与38-46行代码的作用是一样的,将向客户端返回一个User对象,和一个success字段
  19. // String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"JSONActionGeneral\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
  20. // out.println(jsonString);
  21. out.flush();
  22. out.close();
  23. }

struts.xml中的配置:

  1. <package name="default" extends="struts-default" namespace="/">
  2. <action name="testJSONFromActionByGeneral" class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="doAction">
  3. </action>
  4. </package>

注意:这个action没有result,且doAction方法没有返回值!

在Action中以Struts2的方式输出JSON数据

本着“不重复发明轮子”的原则,我们将转换JSON数据的工作交给Struts2来做,那么相对于在Action中以传统方式输出JSON不同的是,Action是需要将注意力放在业务处理上,而无需关心处理结果是如何被转换成JSON被返回客户端的——这些 工作通过简单的配置,Struts2会帮我们做的更好。

  1. public String testByAction() {
  2. // dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
  3. dataMap.clear();
  4. User user = new User();
  5. user.setId("123");
  6. user.setName("JSONActionStruts2");
  7. user.setPassword("123");
  8. user.setSay("Hello world !");
  9. dataMap.put("user", user);
  10. // 放入一个是否操作成功的标识
  11. dataMap.put("success", true);
  12. // 返回结果
  13. return SUCCESS;
  14. }

struts.xml中action的配置:

  1. <package name="json" extends="json-default" namespace="/test">
  2. <action name="testByAction"
  3. class="cn.ysh.studio.struts2.json.demo.action.UserAction" method="testByAction">
  4. <result type="json">
  5. <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
  6. <param name="root">dataMap</param>
  7. </result>
  8. </action>
  9. </package>

凡是使用Struts2序列化对象到JSON的action,所在的package必须继承自json-default,注意,这里唯一的result,没有指定name属性。

2 sql server分页查询

SELECT A.*
FROM(select *, ROW_NUMBER() over(order by ID) as rows from MyHz.dbo.NCParameterMod)A where A.rows>=5;

3自增长的id重新排列

数据库中把ID自增长重置成1:

一般做法:(太麻烦)

复制表数据->删除原表、新建一张表->粘贴;

新方法一

数据库中:新建查询->复制、粘贴一下代码->修改表名,执行即可(先把表数据清空)

 DBCC CHECKIDENT ('表名', RESEED, 0)

新方法二

TRUNCATE TABLE 表名

来源:http://blog.csdn.net/u013816709/article/details/26245907

 SQLSERVER的最大连接数

如何查看SQLServer的最大连接数?相信很多人对个很有兴趣,一下就给出两种方法:

1. 查询服务器属性

  

默认服务设置为0(表示不受限制)。

2. SQL查看最大连接数

  

这里的32767就是服务器的最大连接数了。

如果你想自己设置服务器的最大连接数,可以使用以下SQL

1
2
exec sp_configure 'show advanced options', 1
exec sp_configure 'user connections', 500

参考:http://www.cnblogs.com/rainnight/archive/2013/12/18/3480122.html

异常处理

异常又分为 局部异常处理 和 全局异常处理

在struts.xml中声明捕捉异常,使其转成自定义错误提示界面

局部异常处理,定义在action标签内:

struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <package name="struts2" extends="struts-default">
  7. <!-- name="login" 这个名字可以自己定义 要和 提交表单的那个action名字一致 -->
  8. <action name="login" class="com.struts2.LoginAction">
  9. <!-- 局部 异常处理 -->
  10. <exception-mapping result="myexception1"
  11. exception="com.exception.MyException">
  12. </exception-mapping>
  13. <!-- 异常跳转的界面 -->
  14. <result name="myexception1">/error.jsp</result>
  15. <!-- name="success"
  16. 这个名字要和LoginAction.java 的 execute() 方法的返回值一致
  17. -->
  18. <result name="success">/result.jsp</result>
  19. </action>
  20. </package>
  21. </struts>
  1.  
  2. 全局异常处理,定义在action标签外:

struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <package name="struts2" extends="struts-default">
  7. <!-- 全局 异常处理 -->
  8. <global-results>
  9. <result name="myexception1">/error.jsp</result>
  10. </global-results>
  11. <global-exception-mappings>
  12. <exception-mapping result="myexception1"
  13. exception="com.exception.MyException">
  14. </exception-mapping>
  15. </global-exception-mappings>
  16. <!-- name="login" 这个名字可以自己定义 要和 提交表单的那个action名字一致 -->
  17. <action name="login" class="com.struts2.LoginAction">
  18. <!-- name="success"
  19. 这个名字要和LoginAction.java 的 execute() 方法的返回值一致
  20. -->
  21. <result name="success">/result.jsp</result>
  22. </action>
  23. </package>
  24. </struts>
  1.  

4.错误页面error.jsp,

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="s"  uri="/struts-tags"%>
  3. <html>
  4. <body>
  5. <!-- 这个exception 是 exception="com.exception.MyException" -->
  6. <s:property value="exception.message"/>
  7. </body>
  8. </html>
  1. </struts>

自定义一个异常,该异常继承Exception父类

  1. package com.exception ;
  2. //自定义异常
  3. public class MyException extends Exception {
  4. private String message;
  5. public MyException(String message)
  6. {
  7. super(message);
  8. this.message = message ;
  9. }
  10. public String getMessage() {
  11. return message;
  12. }
  13. public void setMessage(String message) {
  14. this.message = message;
  15. }
  16. }

来源:http://blog.csdn.net/hzc543806053/article/details/7493268

打印日志、sql语句

配置log4j.properties文件,copy如下代码:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.Java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout

记得加入jar包,common-logging.jar ;    log4j.jar,

修改项目名称

右键-重命名       这并不能修改发布的项目名称,需要继续以下操作:

最后保存即可

Struts+ibatis-学习总结二的更多相关文章

  1. Struts 2学习(二)

    文章目录 @[toc] #动态结果 配置时不知道执行后的结果是哪一个,运行时才知道哪个结果作为视图显示给用户. #全局结果 全局就结果可满足一个包中多个Action共享一个结果. 全局结果位于pack ...

  2. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  3. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

  4. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  5. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

  6. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  7. Android Animation学习(二) ApiDemos解析:基本Animators使用

    Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...

  8. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  9. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  10. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

随机推荐

  1. mysql关联查询

    mysql数据库的统计------生成统计信息 1.distinct:在一组之中将各个唯一的值找出来,如找出所有的品牌种类 mysql>select distinct brand_kind fr ...

  2. 双击内容变input框可编辑,失去焦点后修改的数据异步提交

    <html> <head> <meta charset="utf8"> <script src="https://cdn.boo ...

  3. 剑指Offer(书):不用四则运算做加法

    题目:写一个函数,求两个整数之和,不得使用四则运算位运算. package com.gjjun.jzoffer; /** * 写一个函数,求两个整数之和,不得使用四则运算 * * @author gj ...

  4. CodeForces 703A Mishka and trip

    Description Little Mishka is a great traveller and she visited many countries. After thinking about ...

  5. python for data analysis chapter1~2

    Q1:numpy与series的区别:index Tab补全(任意路径Tab) 内省(函数:?显示文档字符串,??显示源代码:结合通配符:np.* load *?) %load .py ctrl-c( ...

  6. loj2182 「SDOI2015」寻宝游戏

    参考这里 #include <iostream> #include <cstdio> #include <set> using namespace std; typ ...

  7. [POJ 1008] Maya Calendar C++解题

        Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 62297   Accepted: 192 ...

  8. mysql update连表

    UPDATE price_air_item t1 LEFT JOIN order_item t2 ON t1.ORDER_ITEM_ID = t2.ORDER_ITEM_ID SET t1.BUYER ...

  9. Zend Framework 2中如何使用Service Manager

    end Framework 2 使用ServiceManager(简称SM)来实现控制反转(IoC).有很多资料介绍了service managers的背景,我推荐大家看看this blog post ...

  10. day03_12 缩进介绍

    python比较变态,必须缩进,而C可以不缩进,世界上只有python这门语言要求必须缩进 tab键是缩进,shift+tab往左移动 SyntaxError:invalid syntax 语法错误 ...