美文网首页
Session、Struts and Hibernate

Session、Struts and Hibernate

作者: Tommmmm | 来源:发表于2018-07-30 11:23 被阅读0次

Session

1、什么是Session
服务器可以为每个用户浏览器创建一个会话对象(session对象), 一个浏览器独占一个session对象(默认情况下)
在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用于标识用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录 在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId。

2、什么是Cookie
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。

当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

3、Cookie与Session的区别
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

4、Session的实现原理
服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。

//使用request对象的getSession()获取session
 HttpSession session = request.getSession();

Hibernate

1、什么是Hibernate
一个对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

2、POJO与JAVABean
POJO:纯洁老式的Java对象
JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。

2、为什么使用Hibernate
Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
Hibernate是一个基于JDBC的主流持久化框架。

JDBC:JDBC是一种用于执行SQL语句的Java API

3、Spring 中的JdbcTemplate

    @Test
    public void test1() {

        // JDBC模板依赖于连接池来获得数据的连接,所以必须先要构造连接池
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/spring");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");

        // 创建JDBC模板
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);

        // sql语句
       INSERT INTO t1(field1,field2) VALUE(v001,v002);    
       String sql = "delete from temp where id = ?"; 
       String sql = "update temp set username =?,password=? where id = ?";  
      jdbcTemplate.update(sql, user.getUsername(),user.getPassword(),user.getId()); 

        System.out.println(num);

    }

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;
query方法及queryForXXX方法:用于执行查询相关语句.

4、Spring JPA ----------- Hibernate
JPA:Java持久层API,一种对象/关系映射工具来管理Java应用中的关系数据。

配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=create

编写实体类:我们给实体类加上@Entity加上注解后,实体类User会将首字母变为小写和数据库中的user表相对应。

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable=false)
    private String name;

    @Column(nullable=false)
    private Integer age;

    public User(){}

    public User(String name, Integer age){
        this.name = name;
        this.age = age;
    }
    省略get/set方法。。。
}

编写接口:

@Repository
public interface UserRepository extends JpaRepository<User, Long>{

    User findByName(String name);
    User findByNameAndAge(String name, Integer age);

//test的实际效果是查询
    @Query("select p from Person p where p.name=?1 ")
    User test( String name);
}

两个框架

Struts
轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。


Action:
public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    @Override
    public String execute() throws Exception {
        if (username.equals("wu") && password.equals("123")) {
            return SUCCESS;
        } else {
            return LOGIN;
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Spring

ORM :对象关系映射Object Relational Mapping

Other

一个int占4个字节 32位
Float 占4字节
char占2字节

AOP的实现原理—反射与动态代理

JAVA反射机制:
对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

HashMap:数组和链表

相关文章

  • Session、Struts and Hibernate

    Session 1、什么是Session服务器可以为每个用户浏览器创建一个会话对象(session对象), 一个浏...

  • 三大框架

    ssh SpringMVC/Struts/Struts2 、Spring、Hibernate ssm Sprin...

  • hibernate

    hibernate默认不提交事务 hibernate有2级缓存 session.save() session.sa...

  • 常用XML约束

    Web web.xml Struts2 struts.xml .validation.xml Hibernate ...

  • SSH整合

    SSH整合: SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts...

  • Struts、Spring、Hibernate、Mybatis框

    (一)Struts、Spring、Hibernate、Mybatis框技术 1.Struts2.0有几种标签库 【...

  • Spring-base-1(Spring基础-1)

    Traditional-Frame ssh = spring + struts + hibernate ssm =...

  • 15_Spring SSH整合准备

    SSH框架 SSH = Struts2 + Spring + Hibernate Struts2框架整合所需jar...

  • Hibernate

    hibernate简介Hibernatehibernate简介hibernate快速入门session查询api实...

  • hibernate的核心类有那些

    hibernate的核心类有那些? Hibernate的核心接口一共有5个,分别为:Session、Session...

网友评论

      本文标题:Session、Struts and Hibernate

      本文链接:https://www.haomeiwen.com/subject/egyirftx.html