实习两个月的总结

1:使用与和或来定义每个操作的权限,下面用二进制表示
增加:0001
删除:0010
修改:0100

1. 如果一个用户要有增加与修改权限,使用或:则为0000 | 0001 | 0100,结果他的权限则为0101
2. 查看一个用户是否有修改权限0100,使用与:0101 & 0100 为 0100,与的结果与修改权限的值一样,则此用户有修改权限。
3. 查看一个用户是否有删除权限0010,使用与:0101 & 0010 为 0000,与的结果与删除权限的值不一样,则此用户没有删除权限

 

2:在eclipse 中配置el表达式的使用;

   解决:<%@ pageisELIgnored="false" %>

         并且要求web.xml的web-app 的version=2.4以上;

 

3: 不能相信客户端的校验,服务器端仍要校验;

 

4:js对象的构造方法:var obj = {} ; var obj = new Object();

 

5:3.3.    使用通配符映射(wildcard mappings)方式:

在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。

当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:

<action name="user_*"

class="org.qiujy.web.struts2.action.UserAction" method="{1}">

            <result name="success">/success.jsp</result>

            <result name="error">/error.jsp</result>

        </action>

如上,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式 {1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的 login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法

 

 

6:mysql 启动1067错误:my.ini文件配置错误

 

7:坑爹的mysql中文乱码问题:

  网上解决办法:设置统一的数据库;表;字段编码;

  查看数据编码格式:show variables like 'char%';

  设置默认的编码格式:在my.ini文件的mysql 部分添加

  default-character-set=utf8;(不然默认是瑞典文);

  本次遇到的问题:在application.xml 的配置文件中的datasource 缺少对characterEncoding的设置;

     解决:                                                  <property name="url"value="jdbc:mysql://localhost:3306/school?useUnicode=true&amp;characterEncoding=UTF-8"></property>

 

 

8:spring 的注解:

   配置bean注入:

   Class xxx{

    @autowired

       Private Boss boss;

}

 Class Boss{

<beanclass="org.springframework.beans.factory.annotation.

       AutowiredAnnotationBeanPostProcessor"/>

若未找到autowaird的自动配置的bean时候会报异常:

这时候需要更改配置为@Autowired(required = false);

 

当出现两个可匹配的bean时:可以通过下面方法解决;

使用 @Qualifier 注释指定注入 Bean 的名称

@Autowired

public voidsetOffice(@Qualifier("office")Office office) {

this.office =office;

或者:

 publicclass Boss {

   @Autowired

   private Car car;

 

   @Autowired

   @Qualifier("office")

   private Office office;

…}

 

Dao的配置bean:@repository(“ xxxx”);

Service 的配置bean:@service(“xxxx”);

Service 注入dao :@autowired

Application 需要增加的配置:default-autowire=”true”

 

Struts 的action 配置注解:(需要添加struts2-convention-plugin-2.1.8.1.jar

)

  @namespace(value=”/”)

  @results({

     @result(name = “success” ,value=”/success.jsp”),

  @result(name=”faliure”  ,value=”/failure.jsp”)

})

 

同时使用配置和注解:出错;

 

9:关于binernate的 二级缓存机制:

 一级:session :二级sessionFactory

 注意点1: 

 财务数据等是非常重要的数据,绝对不允许出现或使用无效的数据,所以此时为了安全起见最好不要使用二级缓存。

    因为此时 “正确性”的重要性远远大于 “高性能”的重要性;

 

 

10: Write operations are not allowed inread-only mode (FlushMode.NEVER/MANUAL): Turn your Session intoFlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

  问题:在application.xml 中配置了事务处理;注意查看自己的方法名和配置的是否一致

 

11:dwr 提供的清空下拉框的方法:

DWRUtil.removeAllOptions(select_menu1);

 

12:load 与get的比较

   Session.load(class,id);

   Session.get(class,id);

   遇到结果集为空的情况:load抛出异常;get返回null;

                         Load支持延迟加载;get不支持;

                          比如session.load(class,id),只要到用到结果的时候才会发出一条sql;

 

13:生成id策略:

   Increament:在集群情况下会出现id不唯一;

   Sequence  :当整合两个数据库文件时候肯能出现id不唯一;

   。。。建议使用uuid:32bit

 

14:jquery动态添加html:

    $(‘#id’).append(“<div></div>”);

    $(‘#id’).html(“<div></div>”)

 

15:关于hibernate datasource部分配置

Hibernate自带的连接池算法相当不成熟. 它只是为了让你快些上手,并不

适合用于产品系统或性能测试中。 出于最佳性能和稳定性考虑你应该使用第三

方的连接池。只需要用特定连接池的设置替换 hibernate.connection.pool_size

即可。这将关闭Hibernate自带的连接池. 例如, 你可能会想用C3P0

注意需要添加:c3p0.jar包

 

<bean  id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">

 <!-- 指定连接数据库的驱动 -->
  <property name="driverClass"value="com.mysql.jdbc.Driver"/>
  <!-- 指定连接数据库的URL -->
<property name="jdbcUrl"    value="jdbc:mysql://localhost:3306/financemanager"/>

 <!-- 指定连接数据库的用户名 -->
  <property name="user" value="root"/>
  <!-- 指定连接数据库的密码 -->
  <property name="password" value="root"/>
<!--初始化时获取连接的个数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="3" />
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="3" />
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="50" />
<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="600" />
<!--用以控制数据源内加载的PreparedStatements数量(一般在100),maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
<property name="maxStatements" value="100" />
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="3" />

</bean>  

 

 

16:关于tranction(事务)

    配置好事务;然后按配置好的事务创建规则的方法;在方法内的的所以插入更新操作均将受到事务的约束;

 

17:struts 配置防止重复提交的拦截器token

       <action >

           <interceptor-ref name=”token” />

           <result name=”invalid.token”>/…./xx.jsp</token>//重复提交跳转到。。。

</action>

 

18:联想控件实现联动:

   配置属性:whereConditionFunc: xxx

       Function xxx(){

Return “ conditionxxx = param ”;

}

 

 

19:注意在做删除的时候如果遇到是多表的话、不能直接调用框架的信息;如果要做删除只能自己写方法处理;先把当前记录下的所有记录删除才可以删除本条记录;不然会提示你先保存在删除;

 

20:关于如何在hibernate中使用jdbc

 

     1:获得当前session :super.getHibernateTemplate().getSessionFactory().getCurrentSession()

     2:获得connection :session.connection;

     3:获得statement:connection.prepareStatement(sql);

     4:获得result:  statement.executeQuery();

 

21:JTA 和jdbc的transaction 区别

  JTA 可以跨多个session

  Jdbc 只能在一个session中(因为jdbc中transaction的声明: Transaction tr = session.beginTransaction())

 

 

22:如何调用存储过程

1.

Sessionsession = super.getHibernateSession().getSessionFactory().getCurrentSession();

         Connection con = (Connection)session.connection();

         try {

            CallableStatement proc =(CallableStatement) con.prepareCall("{ call SP_MATCH_CRM_CUST(?)}");

            proc.registerOutParameter(1, Types.VARCHAR);

            proc.execute();

         } catch (SQLException e) {

            e.printStackTrace();

         }finally{

            try {

                con.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

         }

      }

2.

                CallableStatement proc=null;

         proc=myConnection.prepareCall("{callxs_proc(?,?)}";

         proc.setString(1,"zhangsan");

         proc.registerOutParameter(2,Types.NUMERIC);

         proc.execute();

         Stringteststring=proc.getString(2);

         System.out.println(teststring);

 

22:利用隐藏域提交值时可能出现的错误:

  1: 在刷新编辑区域时可能丢失隐藏域的值;

解决办法:在beforesave中直接对隐藏域设值;

 

 

 

23:hql 语句的组装

   hql.append(“ ”).append(“”);

 

24:BigDecimal :做计算的时候比float 和double 精确;

   BigDecimal.add();

 

25: eclipse 的几个快捷键

ctrl + q :回到编辑的地方;

Ctrl+shift+R :对变量进行重命名;

Ctrl+2 +L :生成变量名

Ctrl+1 :?

Ctrl+T:跳到实现类;

 

26:断点的属性设置:右键断点的圆点:breakPoint properties

设置在改点遇到属性等于?的时候停下;

 打开display 窗口-》可以在窗口中对断点处变量的值进行设置;

 如果想要对service进行调试:可以利用dwr页面加断点调试;

 

 

27:DWR 设置下拉框

DWRUtil.removeAllOptions("regionCode2");

   DWRUtil.addOptions("regionCode2",[ { name:" ", id:" " }],"name","id");

   DWRUtil.addOptions("regionCode2", dataList, "regionCode", "regionName");

  

28:将string 写入到json返回到页面

   Public voidwriteJson(HttpServletResponse response,String str){

    Try{

       response.setContentType(“application/json;charset=utf-8”);

       response.getWrite().write(str);

       response.getWrite().flush();

}catch(Exception e){

e.printstatictrance();

}

}

 

 

29:jsonconfig的使用

通过jsonconfig实例,对包含和需要排除的属性进行方便的添加或删除

sonConfig jsonConfig = new JsonConfig();  
jsonConfig.setExclusions( new String[]{"address"});  
Person bean = new Person("jack","li");  
JSON json = JSONSerializer.toJSON(bean, jsonConfig); 

 

30:

String records=JSONArray.fromObject(page.getList(),jsonConfig).toString();

//原理:JSONArray.fromObject(object)将数组或链表解析成其对象的json字符串时,利用所装载的对象的get方法来构造字符串,

 

31:关于如何解析excel:

  需要两个包:poi 和jxl

  a:获得输入流

Workbook wb =Workbook.getWorkbook(new File(“excel file”));

//获得地一个工作区域

Sheet sheet = wb.getSheet(0);

//获得第一个单元格

Cell cell1 = sheet.getCell(0,0);

String str = cell1.getContents();

 

32:关于如何判断读取的excel是否为最后已行/列

Currposition//是当前位置

CurrPosition>sheet.getLastRowNum();

 

获得列数

//根据行数取得sheet 的一行

HSSFRow rowline = sheet.getRow(row);

Int filledColumns =rowline.getLastCellNum();

//获取当前cell

Cell = rowline.getCell((short)i);

 

33: linux 的登录日志放在var/log文件下

   Who :显示当前登录的每个用户

 

34:退出vi 插入模式

 Ctrl +c

 

35:linux 如何查看主机名

  Hostname

 

 

 36:linux 查看ip

 Ifconfig

 

37:vi中设置行号

 set nu

 vi 移动到某一行

 移动到12行40字符

先按50G 然后40->

查找某字符

/xxx

38:所有service的引用要配置到引用中。否则会导致容器识别不到serveice

  从而出现空指针异常;(很傻的错误:贪图省事直接用new 一个service ,然后应用,爆汗)

 

38:学会使用断点的跟踪和异常堆栈的查看(很重要)

 

39:QueryInfo 的使用:

   1:创建QueryInfo 对象

       QueryInfoinfo = new QueryInfo(Object.class); 

2:设置查询值是否按分页(list 不分页)

   Info.setListType(QueryInfo.LISTTYPE_LIST);

3:设置要查询的字段以及字段值(可以设置多条件查询)

   Field field = new Field(TmsOrderDomain.custCode);//设置查询的字段

   Field.setCondition(Field.CONDITION_EQ);//设置查询的条件eg:”=”

   Field.setFieldValue(custCode);//设置查询字段的值

 4:将查询条件加到queryinfo 中

    Info.addField(field1);

 5:查询

    List<TmsOrder> tmsOrderList = (List<TmsOrder>)QueryHandle.findByQuery(info); 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值