Web

2018-07-18  本文已影响0人  Y_K柳上原

Cookie


浏览器提交Cookie时只提交name和value


Session


Fliter(javax.servlet.Fliter)

Listener (Servlet2.3)

监听session、context、request对象的创建和销毁

监听session、context、request对象的属性变化


Servlet

Servlet线程安全问题(单实例多线程)

Servlet在运行过程中只会初始化一次,之后都使用同一个对象来处理请求
tomcat(Servlet容器)将请求封装成HttpRequest对象传递给service方法
当多个线程并发访问时,每个线程会创建自己的堆栈,对于局部变量来说,每个线程
压入堆栈的局部变量都是不同的,而对于类的成员变量或者静态变量(因为对象一般在堆上)各个线程是共享的,并发操作这些变量可能会造成线程安全问题
当在Servlet中对某个外部对象如文件进行操作时要进行加锁进行互斥访问

SSH框架

Struts2

工作流程,拦截器截取请求,获取请求参数,根据配置文件,创建一个Action,将请求参
数封装到该Action实例中,Action处理完一次请求就会销毁

    <struts:form>
        <struts:label value="登录系统"></struts:label>
        <struts:textfield name="acount" label="账号"></struts:textfield>
        <struts:password name="passwd" label="密码"></struts:password>
    </struts:form>

配置在struts-core包的struts-default.xml文件中进行配置
示例
timer拦截器,记录Action执行时间并打印到控制台
配置到相应action中
token拦截器(防止表单重复提交)

Hibernate

jar包
required + jpa + [日志] + 数据库驱动
配置文件
1.映射文件
表的主键的配置(<id>)
配置主键生成策略(<generate class='native'>)
表字段和类成员对应配置(<property>)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <!-- 配置类和表结构的映射 -->
    <class name="entity.User" table="h_user">
        <!-- 配置id 
            见到name属性,JavaBean的属性
            见到column属性,是表结构的字段
        -->
        <id name="id" column="uid">
            <!-- 主键的生成策略 -->
            <generator class="native"/>
        </id>
        
        <!-- 配置其他的属性 -->
        <property name="username" column="username"/>
        <property name="password" column="password"/>
        
    </class>
    
</hibernate-mapping>  

2.全局配置文件
先配置SessionFactory(一个SessionFactory对应一个数据库)
数据库驱动+url+用户名+密码+数据库方言(必须配置)
可选配置[显示SQL语句+格式化SQL语句+自动生成数据库的表结构]
引入映射的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
<hibernate-configuration>
    
    <!-- 记住:先配置SessionFactory标签,一个数据库对应一个SessionFactory标签 -->
    <session-factory>
        
        <!-- 必须要配置的参数有5个,4大参数,数据库的方言 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///day01</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        
        <!-- 数据库的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        
        <!-- 可选配置 -->
        <!-- 显示SQL语句,在控制台显示 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 格式化SQL语句 -->
        <property name="hibernate.format_sql">true</property>
        <!-- 生成数据库的表结构 
            update:如果没有表结构,创建表结构。如果存在,不会创建,添加数据
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!-- 映射配置文件,需要引入映射的配置文件 -->
        <mapping resource="entity/User.hbm.xml"/>
        
    </session-factory>
    
</hibernate-configuration>  

Dao 数据访问对象

上一篇 下一篇

猜你喜欢

热点阅读