物联网项目开发(理论)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36271806/article/details/53760871

理论知识:软件的生命周期等
软件工程组成三要素:软件工程方法、软件工程工具、软件工程过程

软件生命周期:分析-设计-编码测试(白盒测试-单元测试)-运行维护
生命周期模型:瀑布模型-原型模型–螺旋模型(迭代递增)等。

瀑布模型:开发完毕才能看到系统结果–适合需求非常确定的开发;不利于产品的后期演化升级
原型模型:快速实现系统的初步模型,符合人的认知和思维过程;适合不确定的需求软件开发
螺旋模型:引入了风险分析,综合了瀑布模型和增量模型的特点

软件开发工具:PowerDesign-ER图、Rational Rose–Uml图

Junit:
使用junit进行单元测试:eclipse会防止方法污染(防止错误的扩散)而对测试的几个方法使用不同的线程
方法调用顺序(使用@test标注):Before-Test-After
junit的运行机制:BeforeClass和AfterClass是Static方法–异步线程

assertEquals(4,mo.sub(8,4));
//sub是一个执行减法操作的方法

数据库:cmd命令下执行sqlplus/ as sysdba 进入超级用户;DBA用户下创建新用户并赋给权限等,之后使用用户帐号登陆创建表结构等。

PS:select table_name ,tablespace_name from user_tables;
table_name为表名 ,tablespace_name为该表使用的表空间名

源代码版本管理工具:Git、SVN

文章:java用户角色权限处理

项目开发(非部署):单个jar添加Variable;多个jar需要添加User Libernary;
项目部署时则需要把所有jar添加到WEB-INF下的lib中

使用注解来标注实体和表的映射关系
PS:项目中query可写在Dao层或实体上,具体区别不大,修改时代码修改位置不同(参数绑定的query、多态的query)

//设计模式:模版与回调
public List<?> hibnernateTemplate{
    private SessionFactoey sf;
        public void query (hibernnateCallback hc){
        Session ses = sf.getCurrentSession();
        Query  q = hc.createQuery(ses);
        retorm q.list;
    }
}
public interface hibernnateCallback{
    Query createQuery(Session ses);
}

instances:实例

Spring:统一的异常架构来描述异常信息

设计模式:会话门面模式(只提供接口,接口中有很多方法)

三层结构一般的做法:Entity–Dao接口 –Dao实现–Service接口–Service中注入Dao

alt+shift+s出现之后 c是无参构造方法 o是带参构造方法 r是getset s是tostring
ctrl+shift+o 自动导包

@Autowired和@Resource两个注解的区别:
1、@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
2、@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了。
Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。

Spring注解的使用:没有用注解写spring配置文件的时候,会在spring配置文件中定义Dao层的bean,
这样我们在service层中,写setDao方法,就可以直接通过接口调用Dao层,
用了注解写法后,在配置文件中不用再写Dao层的bean,
只需要在Dao实现类中加入
@Repository
public Class TestDaoImpl(){}

在service层定义
@Autowired
private TestDao testDao;
不需要再写setDao方法就可以通过接口调用Dao了

在Service层加入
@service
public Class TestService(){}
这样action中直接写
@Autowired
private TestService testService;
就可以调用service层

在Action层加入
@Controller
public Class TestAction(){}
就不需要在配置文件中定义action的bean

@requestMapping是spring-mvc的东西,
以前我们用struts2, 需要配置文件定义 action的名字,
在浏览器中写 XXX.do才能访问action的方法

使用了srping-mvc后,在action的方法中加入
@controller
public class TestAction(){
@requestMapping(“XXX.do”)
public String findAll(){
……………..
}
}
这样,就不需要struts了,直接在浏览器中输入XXX.do就可以访问findAll方法了

Spring IOC:1.对象创建(
1.直接调用有/无参构造方法;
2.工厂方法(class=“….” factorymethod=”…”);
3.工厂设计模式:工厂类型的创建方法(factorybean=”…” factorymethod=“….”))
2.依赖注入:外部的成员变量 自己不去调用,需要其他来调用它本身
注入的方式:手动(通过构造方法,通过set方法,查找方法的注入)、自动(byname、bytype、constrator等)
@Repository@Service@Controller

JUnit中Assert(断言)的使用方法

Spring依赖注入,注入的是接口,不是实现类
Spring IOC的理解及注解的使用

RPC:远程过程调用

JSP页面表单提交与表单验证

jsp中使用js进行合法性检测(非空验证等)

<table>
        ==================查询
        <s:form action="queryStoreInfoAction" method="POST"
            onsubmit="return checkform(this);">
            <!-- <%=request.getContextPath()%>代表的是当前项目,/*.action代表的是web.xml中配置的url-pattern -->
            <s:textfield id="sid" name="sid" label="库房ID" />
            <s:submit value="查询" />
        </s:form>
        <script type="text/javascript">
            function checkform(queryStoreInfoAction) {
                if (queryStoreInfoAction.sid.value == ""
                        || queryStoreInfoAction.sid.value >= 7){
                    alert("请输入合法库房ID");
                    return false;
                }
                return true;
            }
        </script>
        仓库ID:
        <s:property value="store.storeID" />
        </br> 仓库名称:
        <s:property value="store.storeName" />
        </br> 备注:
        <s:property value="store.storeNote" />
        </br> 最后编辑时间:
        <s:property value="store.storeEditTime" />

        <br>==================更新
        </br>

        <s:form action="storeOptAction" method="POST">
            <s:textfield name="storeID" label="库房ID" />
            <s:textfield name="storeName" label="库房名称" />
            <s:textfield name="storeNote" label="描述" />
            <s:submit value="保存" />
            <s:reset value="重置" />
            <!-- 用actionmessage标签输出action中addActionMessage()保存的信息 -->
            <!-- store.setStoreEditTime(new Date());
            assetsBiz.updateStore(store);
            this.addActionMessage("更新成功");
            -->
            <s:actionmessage/>
        </s:form>
    </table>

Ajax:XMLHttpRequest+js+css
document–DOM对象

浏览器无法访问WebContent中的内容:动态web项目eclipse部署上去的是WebContent

Ajax编程:初始化XMLHttpRequest(分浏览器)–注册回调onreadystatechange(写回调:判断状态为4或者其他–响应代码为200–处理结果–responseText或responseTestXML)–发送请求

HTML表格实例
org.hibernate.QueryParameterException: could not locate named parameter错误的解决方法

Http方法get和post的对比:
Http方法get和post的对比

Hibenrnate中List永远不为null,只有size=0的情况

//负载均衡:web前装一个Ngnix,自动分配到web上 
//高速缓存: Redis 
//成员变量需要串行化(加锁解锁)防止资源争夺,保证线程安全
//JSTL中的EL访问的是attribute(属性名字相同时需要用作用域约束)

Web开发中实现会话跟踪–购物车

没有更多推荐了,返回首页