0%

SSM框架

SSM框架-mybites框架

配置

步骤:

  1. 创建maven工程并且引入坐标

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>x.x.x</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
    </dependency>
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11 </version>
    </dependency>
  1. 创建实体类和dao的接口

  2. 创建Mybatis的主配置文件(SqlMapConfig.xml)

    1
    2
    @Select("select * from user")
    public List<User> getAll();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/><!--通过xml的方式-->
<mapper class="org.mybatis.example.BlogDao"/><!--通过注解的方式,class为注解的类-->
</mappers>
</configuration>
  1. 创建映射配置文件(IUserDao.xml)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="org.mybatis.example.BlogMapper">
    <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
    </select>
    </mapper>

注意事项:

  1. 创建映射配置文件时,文件的目录结构要和dao层的目录结构相同,方便mybatis的自动寻找。
  2. 映射配置文件的mapper标签namespace属性取值dao接口的权限定类名
  3. 映射配置文件的操作配置(select),id属性取值dao接口类的方法名

使用

1
2
3
4
5
6
7
8
9
10
11
12
  // 配置文件
InputStream in =Resources.getResourceAsStream("SqlMapConfig.xml");
// 创建SqlSessionFactory 对象 并且得到session对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
// 通过session对象获取到dao接口的动态代理对象
IUser userimpl = sqlSession.getMapper(IUser.class);
// 使用动态代理类得到数据
List<user> all = userimpl.getAll();
// 关闭资源
sqlSession.close();
in.close();

读取配置文件

  1. 使用类加载器读取,他只能读取类路径下的配置文件。
  2. 使用ServletContext对象的getRealPath()方法读取配置文件。

mybatis使用代理dao的方式实现的增删改查方式

  1. 创建代理对象(可以使用dom4j的技术来解析xml文件)

    连接数据库的信息(xml文件中)connection

    mapper映射配置信息

    通过mapper配置信息找到所对应的sql语句 和 封装的实体类限定名 prepareStatement

  1. 使用代理对象调用增删改查方法

——————————东软

dispatchServlet 是 springmvc的核心拦截器,拦截所有的请求

handlerMapping 相当于MAP , key 为 url ,value 为 Handler

  • Handler 里面有类名,方法名,参数列表

handlerMapping 将 Handler 返回给 dispatchServlet

dispatchServlet 将获取到的对象给 HandlerAdapter

HandlerAdapter 解析 Handler 里面的类名,方法名,参数列表 并进行调用

HandlerAdapter 调用完的返回值给 dispatchServlet

dispatchServlet 将返回值 给 视图解析器

视图解析器 通过返回值找到相应的页面进行转发。

handlerMapping

注意 :需要配置handlerMapping的配置文件 namespace 或者(servlet名字-service) WEB-INF目录下面

1
2
3
4
5
6
7
8
9
10
1.开启注解驱动
<mvc:annotation-driven></mvc:annotation-driven>
2、包扫瞄(只有包里面加了@Controller注解的类才会被扫描到,方法上加上@RequestMapping注解)
<context:component-scan base-package="被扫描的包名"></context:component-scan>
3、配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"> </property>
<property name="prefix" value="/WEB-INF/pages"></property>
<property name="suffix" value=".jsp"></property>
</bean>

向作用域里放入变量

1
2
3
4
5
6
7
8
// 1、使用HttpServletRequest
HttpServletRequest.setAttribute(key,value)
// 2、使用ModalMap
ModalMap.setAttribute(key,value)
//3、使用ModalAndView,需要先new一个对象 并且返回值改变为ModalAndView
ModalAndView modalAndView = new ModalAndView("abcd") // abcd 是js页面
modalAndView.addObject(key,value)

使用springmvc 重定向 return “redirect:xxx”

AJAX

使用了前后端分离,就不能进行转发和重定向了,应该向前台发送json或者xml来传送字符流。

可以使用fastJson来进行对象与json之间的转换。

使用 JSONObject.toJSONString()

如果想直接返回json数组,而不想转发或者重定向到jsp页面上。可以使用@ResponseBody注解或者使用response.getWriter().write(json字符串)

前后端分离会产生跨域请求问题:解决方法(使用filter)filter所在包org.catalina.filters.CorsFilter

VUEJS

vuejs是分区域进行控制的,可以绑定数据

1
var Vue =   new VUE({“el”:"#app","data":{"abcd":"123456"})

数据使用

使用for循环或if 要在标签里面写,与jstl不同,jstl是进行包裹。

1
2
3
<tr v-for="student in list">
<td>{{student.name}}</td>
</tr>

使用v-model进行双向绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// @click 代表使用vue里面的方法,如果使用vue作用域中的内容,则不再需要{{}} eg:@click=del(student.id)
var Vue = new VUE({
“el”:"#app",
"data":{
"abcd":"123456",
"student":{
"name":"",
"age":"",
}
},
"methods":{
"submit":function(){

}
}
)

数据库

模糊查询 添加条件 用concat函数进行字符串拼接

IOC控制反转 使用setting注入和构造注入,建造xml文件,每一个对象是一个bean (要有id 和 class)

1
2
3
4
5
6
7
8
9
10
11
12
<bean id="i3" class="com.neuedu.test.I3">
<!-- setter注入,条用set方法为私有属性赋值 -->
<!-- 注意name不是属性的名字,是setter方法去掉set首字母大写 与el表达式相同-->
<property name="name" value="abc"></property>
<!-- 构造方法给私有属性赋值-->
<constructor name="name" value="abc"></constructor>
</bean>
<bean id="mainBoard" class="com.neuedu.test.MainBoard">
<!-- 如果属性是一个对象的话,value改成ref -->
<property name="cpu" ref="i3"></property>

</bean>

使用配置文件实现工厂模式

导包 spring-context (applicationContext.xml 是写bean的xml,名字随便取)

1
2
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml")
MainBoard mainBoard = (MainBoard)context.getBean('mainBoard')

使用spring的IOC(控制反转)

1
<context:component-scan base-package="com.neuedu.test" ></context:component-scan>

类上添加@Component @Repository @Service @Controller 这四种注解的其中一种都能被扫描进去

依赖的属性要写上@Autowired @Resource 注解

main方法无法提前解析配置文件,所以只能使用JUNIT进行测试。还要导入spring的测试包。spring testContex framework, 而且需要在测试类上加上@RunWith(SpringJUnit4ClassRunner.class) 为了告诉启动时加载xml配置文件。@contextConfiguration(locations=”classpath:applicationContext.xml”) 为了告诉配置文件在哪里。

监听器(可以实现服务器启动解析配置文件)需要在web.xml文件中配置listener节点

创建过程 实现 listener接口

​ web.xml中配置listener(org.springframework.web.context.ContextLoaderListener)

​ 还要配置一个参数告诉监听器配置文件是哪一个。

1
2
3
4
5
6
7
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicatinContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

stringUtils类可是判断是否字符串为空,需要导包 org.apache.commons.lang3.StringUtils