防止产生七个指标消耗过多的能源,通过兑现S

2019-08-17 作者:编程   |   浏览(192)

Hibernate: Could not find a getter for iUserId in class com.Hibernate.pojo.User异常,getteriuserid

Java Web -- Servlet(4) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(1)

一、实现Servlet接口

通过实现Servlet接口来了解Servlet的生命周期

(1)以规范的形式创建一个web应用(即在webapps目录下创建一个web应用)

创建web应用

图片 1

(2)classes目录下创建一个.java(该java文件为实现Servlet接口)

创建文件夹MyFirstServlet.java

代码如下:

package com.focus;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class MyFirstServlet implements Servlet

{

//Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。(初始化servlet,把servlet装载到内存中)

//该函数只会被调用一次

public void init(ServletConfig config) throws ServletException{

}

//Servlet引擎调用这个方法以允许Servlet响应请求。这个方法在Servlet未成功初始化之前无法调用。(业务逻辑代码都将写在这个函数中)

//在被卸载后,还没初始化时,service不被调用,其余可重复调用

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException{

System.out.println("Hello World!");

response.getWriter().println("Hello World!" new java.util.Date());

}

//卸载servlet

public void destroy(){

}

//得到servlet的配置信息

public ServletConfig getServletConfig(){

return null;

}

//纯文本的servlet信息

public String getServletInfo(){

return null;

}

}

编译后出现错误,导入的程序包找不到。

图片 2

PS:使用dos编译时,该Java有包是 需要输入的命令行格式为

Javac -d . name.java

(3)配置CLASSPATH 即指定到tomcat的lib目录下的servlet-api.jar(其中有servlet-api.jar就是上面所引入的javax.servlet.*; javax.servlet.http.*;)。

在配置CLASSPATH时得指定到特定.jar

不能设置*.jar ,只能一个个写,所以一般大的工程会配置一个启动脚本,专门计算出所有的jar包,然后导入启动环境中...

图片 3

重启cmd.exe,再重新编译。即可

(4)配置与部署Servlet

MyFirstServlet

MyFirstServlet

com.focus.MyFirstServlet

MyFirstServlet

/My

(5)最后效果:

图片 4

图片 5

图片 6

补充:当Tomcat启动的时候首先会启动一个server.xml,当servlet映射找不到对应的,tomcat启动直接就报错。

二、配置与部署Servlet

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上。

//注册名、自定义一个servlet的名字

MyFirstServlet

MyFirstServlet

//指定该servlet类放在哪个包中 形式 包/包/.../类(包名 类名)

com.focus.MyFirstServlet

//servlet的映射(对一个已经注册)

//自定义一个servlet的名字,但这个名字就代表当浏览器输入/My这个web资源的时候,该名字就映射到与之对应的名字,找到该servlet所在的class

MyFirstServlet

//浏览器所输入的Web资源名

/My

一个注册好了的servlet可以被多次映射

如:

1

1

com.focus.MyFirstServlet

1

/My

1

/Servlet/My

1

/Servlet/My.html

即输入的Web资源不管是/My 或 /Servlet/My或/Servlet/My.html都可以访问到com.focus.MyFirstServlet这个类

当映射一个servlet时候,可以是多层,后缀名为html不一定就是html文件。

进行Servlet映射时,可使用通配符

有两种格式:

第一种格式 *.扩展名 如:*.html *.abc

第二种格式 以“/“开头 同时以”/*“结尾 如:/abc/* /*

例:1. /*

  1. /abc

  2. /abc/*

  3. *.gogo

当浏览器的URL的servlet名 输入/abc时 匹配 2

当浏览器的URL的servlet名 输入/hellobaby时 匹配 1

当浏览器的URL的servlet名 输入/abc/hellobaby时 匹配 3

当浏览器的URL的servlet名 输入/hello.gogo时 匹配 1

匹配标准:

(1)匹配度高的选择映射那个

(2)*.扩展名 的优先级最低

load-on-startup元素标记

1

1

com.focus.MyFirstServlet

1

1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

2)它的值必须是一个整数,表示servlet应该被载入的顺序

2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

5)当值相同时,容器就会自己选择顺序来加载。

所以,x,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。

补充:怎样更好的管理tomcat中的web应用,即进入tomcat Manager

图片 7

Reload:即重载的意思,重新装载该web应用。

Stop:停止该web应用

好处:单独对某个web应用做相应的处理,不用对整个服务器进行操作

[设计模式]单例模式

RxJava操作符总结之过滤

org.hibernate.PropertyNotFoundException: Could not find a getter for iUserId in class com.Hibernate.pojo.User

 at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
 at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
 at org.hibernate.tuple.PropertyFactory.getGetter(PropertyFactory.java:168)
 at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:44)
 at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:123)
 at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
 at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
 at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
 at com.Hibernate.service.BusinessServiceH.<clinit>(BusinessServiceH.java:25)
 at com.Hibernate.test.BusinessServiceHtest.test(BusinessServiceHtest.java:28)
 at com.Hibernate.test.BusinessServiceHtest.main(BusinessServiceHtest.java:46)
Exception in thread "main" java.lang.NullPointerException
 at com.Hibernate.service.BusinessServiceH.saveUser(BusinessServiceH.java:36)
 at com.Hibernate.test.BusinessServiceHtest.test(BusinessServiceHtest.java:40)
 at com.Hibernate.test.BusinessServiceHtest.main(BusinessServiceHtest.java:46)

 

可能原因如下:

1.真的没有写getter方法(发生几率:1%)

2.*.hmb.xml文件中的属性名和pojo不一致(*.hbm.xml和*.java没衔接好,不一致),字段属性没有正确配置,比如,*.hmb.xml中*.java的地址要明确(明确指出引用包的完整路径);映射错误;有多个主键时,对生成的联合主键配置错误;拼写错误(包括多空格)等(发生几率:48%)

3.方法写错/方法名写错,要按照javabean的书写规范写啊,要不然打死也找不到哪儿错了(发生几率:50%)

这里提一下:get/set是不是不允许方法名中有连续两个大写字母,例如

public String getODPType(){

        return this.oDPType;

}

public void setODPType(String      oDPType){

this.oDPType = oDPType;

}

 

这样写它就会报错,报找不到getter for oDPType的错误,但下面这样写就可以了

public String odpType;

public String getOdpType(){

        return this.odpType;

}

public void setOdpType(String      odpType){

this.odpType = odpType;

}

 

4.其他不明原因(发生几率:1%)

 

来自: 

Could not find a getter for iUserId in class com.Hibernate.pojo.User异常,getteriuserid org.hibernate.PropertyNotFoundException: Could not find a getter for iUserId...

1.单例模式介绍

单利模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader中又含有线程池、缓存系统、网络请求等,很消耗资源,因此,没有理由让他构造多个实例。

这种不能自由构造对象的情况,就是单利模式的使用场景

RxJava操作符总结之过滤

2.单例模式的定义

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

jsut()

just(T t1, T t2, T t3 ....) ,just可以传入多个相同类型的参数,并将当前参数一个接着一个的发送。

 Observable.just("1","2","3")
                .subscribe(new Action1() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });

1
2
3

3.单例模式的使用场景

确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。

例如,创建一个对象需要消耗的资源过多,如果要访问IO和数据库等资源,这时就要考虑使用单例模式了

repeat()

repeat() 将当前的消息序列无限制循环发送。我们可以传入一个参数表示循环的次数

 Observable.just("1","2","3")
                .repeat(3)
                .subscribe(new Action1() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });

123123123

4.单例模式UML类图

图片 8

角色介绍:
(1)Client——-高层客户端;
(2)Singleton——单例类

实现单例模式有如下几个关键点:
(1)构造函数不对外开放,一般为Private;
(2)通过一个静态方法或者枚举返回单例类对象
(3)确保单例类的对象有且只有一个,尤其是在多线程环境下;
(4)确保单例类对象在反序列化时不会重新构建对象。

通过将单例类的构造函数私有化,使得客户端代码不能通过new的形式手动构造单例类的对象。单例类会暴露一个共有静态方法,客户端需要调用这个静态方法获取到单例类的唯一对象,在或许这个单例对象的过程中需要确保线程安全,及在多线程环境下构造单例类的对象也是有且只有一个,这也是单例模式实现中比较困难的地方。

defer()

延迟创建Observable。再订阅时创建Observable对象。该方法利用call方法的特性。

public static void main(String[] args) {

        Observable.defer(new Func0>() {
            @Override
            public Observable call() {
                return getInt();
            }
        });


    }


    public static Observable getInt() {

        System.out.println("getInt()");
        return Observable.create(new Observable.OnSubscribe() {
            @Override
            public void call(Subscriber subscriber) {

                System.out.print("ss");
                subscriber.onNext(42);
            }
        });
    }

此时getInt()方法不会被调用,会在subscribe()时调用。这个如果看过源码很容易理解。

本文由小鱼儿玄机30码发布于编程,转载请注明出处:防止产生七个指标消耗过多的能源,通过兑现S

关键词: 小鱼儿玄机30码