java ssm框架入门(一)面向接口编程
因为工作上用到spring + strtus2 + mybatis ,所以开始学习下这个框架。
这里用到的是MySQL数据库
首先从web.xml 开始
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
这里引用了struts 和spring的配置文件
struts.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
- "http://struts.apache.org/dtds/struts-2.1.7.dtd">
- <struts>
- <package name="myPackage" extends="struts-default" >
- <action name="login" class="com.test.action.LoginAction">
- <result name="success">/success.jsp</result>
- <result name="error">/errer.jsp</result>
- </action>
- </package>
- </struts>
applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <!--配置数据源属性文件 -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="location">
- <value>/WEB-INF/configs/sqlServer.properties</value>
- </property>
- </bean>
- <!--配置数据源 -->
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName">
- <value>${jdbc.driver}</value>
- </property>
- <property name="url">
- <value>${jdbc.url}</value>
- </property>
- <property name="username">
- <value>${jdbc.user}</value>
- </property>
- <property name="password">
- <value>${jdbc.pwd}</value>
- </property>
- </bean>
- <!-- 配置sessoin工厂 -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="configLocation" value="classpath:mybatis.xml" />
- <!-- <mappers>
- <mapper resource="com/test/sqlMapper/loginMapper.xml"/>
- </mappers> 这里动态的加载 xml文件,就不用手动在 :mybatis.xml 里面写了这里加载的时候是作为session工厂一起进行加载-->
- <property name="mapperLocations" value="classpath:com/test/sqlMapper/*Mapper.xml" />
- <property name="dataSource" ref="dataSource" />
- </bean>
- <bean id="loginDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
- <!-- 用上面直接指定接口位置-->
- <property name="mapperInterface" value="com.test.dao.ILoginDao"/>
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean>
- <!-- <bean id="loginAction" class="com.test.action.LoginAction">
- <property name="loginDao" ref="loginDao"></property>
- </bean> -->
- </beans>
sql的配置文件
WEB-INF/configs/sqlServer.properties
- jdbc.url=jdbc:mysql://localhost:3306/login
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.user=root
- jdbc.pwd=1234
mybatis.xml
- <?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>
- <typeAliases>
- <typeAlias alias="userinfo" type="com.test.entity.UserInfo"/>
- </typeAliases>
- <!-- <mappers>
- <mapper resource="com/test/sqlMapper/loginMapper.xml"/>
- </mappers> -->
- </configuration>
mybatis.xml 包含的文件
Ssm\src\com\test\sqlMapper\UserInfoMapper.xml
使用接口com.test.dao.ILoginDao来管理 Dao里面的方法
- <?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">
- <!-- 这个namespace可以理解是调用sql方法的一个执行类 -->
- <mapper namespace="com.test.dao.ILoginDao">
- <!-- 这里是完成映射。type里面是映射的实体 column里面是这个实体里面和property表字段想对应的属性 -->
- <resultMap type="com.test.entity.UserInfo" id="userMap">
- <id property="id" column="id" jdbcType="DECIMAL"/>
- <result property="username" column="username" jdbcType="VARCHAR" />
- <result property="password" column="password" jdbcType="VARCHAR" />
- </resultMap>
- <select id="getUser" parameterType="String" resultMap="userMap">
- select * from userinfo where username=#{userName}
- </select>
- <select id="getUserName" parameterType="int" resultMap="userMap">
- select * from userinfo where id=#{id}
- </select>
- </mapper>
mybatis映射文件对应的实体类(类和数据库名一致最好)
- package com.test.entity;
- public class UserInfo {
- private int id;
- private String username;
- private String password;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- 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;
- }
- }
通过配置到bean里面的接口去实现sql方法。
因为spring 里面的bean就是给类的进行实例化的。然后通过id进行调用。
mybatis就是通过id进行调用所属的sql的。
那就直接通过spring去实例化一个类(因为不用写类的具体实现,所以就用接口就行),然后去管理mybatis里面的得到id的方法。
Ssm\src\com\test\dao\ILoginDao.java
- package com.test.dao;
- import java.util.List;
- public interface ILoginDao {
- public List getUser(String userName);
- public List getUserName(int userID);
- }
最后是一个action的内容
Ssm\src\com\test\action\LoginAction.java
- package com.test.action;
- import java.util.List;
- import com.test.dao.ILoginDao;
- public class LoginAction {
- private ILoginDao loginDao;
- private String username;
- private String password;
- 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;
- }
- public ILoginDao getLoginDao() {
- return loginDao;
- }
- public void setLoginDao(ILoginDao loginDao) {
- this.loginDao = loginDao;
- }
- public String execute(){
- String userName = getUsername();
- String password = getPassword();
- System.out.println("userName:"+userName+"\n"+"password:"+password);
- List list = loginDao.getUser(userName);
- List list2 = loginDao.getUserName(1);
- if(list.size()>0){
- return "success";
- }else{
- return "error";
- }
- }
- }
访问路径:http://localhost:8080/Ssm/login.jsp
源码:http://pan.baidu.com/s/1i43PH3Z
java ssm框架入门(一)面向接口编程的更多相关文章
- java ssm框架入门(三)正式项目的web.xml配置
一个正规的上线的web.xml的配置. <?xml version="1.0" encoding="UTF-8"?> <web-app id= ...
- java ssm框架入门(二)添加语言滤器
使用过滤器是在web.xml中使用filter,以下是码过滤器,过滤所有资源的使用 web.xml <filter> <filter-name>setCharactor< ...
- Java中的面向接口编程
面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- java面向接口编程
在oop中有一种设计原则是面向接口编程,面向接口编程有非常多优点,详细百度一大片.我来谈一下详细的使用中的一些不成熟的见解.! 首先面向接口编程能够消除类之间的依赖关系,使得业务仅仅依赖接口. 这样有 ...
- java接口,接口的特性,接口实现多态,面向接口编程
package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...
- go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?
到底是要猫还是要狗 在上篇文章中,我们编撰了一则简短的小故事用于讲解了什么是面向对象的继承特性以及 Go 语言是如何实现这种继承语义的,这一节我们将继续探讨新的场景,希望能顺便讲解面向对象的接口概念. ...
- javascript设计模式学习之十七——程序设计原则与面向接口编程
一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...
- Python 中的面向接口编程
前言 "面向接口编程"写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性.维护性谁都不能拒绝 ...
随机推荐
- apache开源项目--ibatis
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目.最初侧重于密码软件的开发,现在是一个基于Java的持久层框架.i ...
- 发布网站,报Access to the path is denied的解决办法
错误: Server Error in '/' Application.---------------------------------------------------------------- ...
- Jmeter初步使用三--使用jmeter自身录制脚本
今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现 ...
- LoadRunner 录制IE 8卡死
LoadRunner11录制脚本,对IE的版本是有所限制的,它只是支持IE 8 以下版本,其中包括IE 8,高出IE 8版本Loadrunner是不支持的. 我遇到LoadRunner录制脚本时IE8 ...
- WCF入门介绍
内容介绍 1.WCF是什么? 2.WCF能干什么? 3.WCF与以往的分布式技术有何区别? 一.WCF是什么? 比较贴近官方的说法是:WCF(原代号为Indigo)是一个用于创建和运行分布式系 ...
- Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynamics CRM 2011 2013 解决办法
Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynam ...
- dut1305 台阶
Description 如上图所示的一个台阶他的积水量是4 + 2 + 4 + 3 + 4 = 17. 给你一个长度是n的台阶.告诉你每个台阶的高度,求积水量是多少? Input 多组输入数据: 每组 ...
- 通过分析 JDK 源代码研究 Hash 存储机制
通过 HashMap.HashSet 的源代码分析其 Hash 存储机制 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元 ...
- sql中用逗号拼接字符串
MSSQL中可以用STUFF函数拼接成字符串. 如: SELECT FieldSomeElse, ( SELECT STUFF(( SELECT ',' + LinkField FROM Detail ...
- A Tour of Go Basic types
Go's basic types are bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr ...