一,搭建项目
注意勾选项目骨架
注意web项目 用的是war包。
生成后其项目的框架为:
二,引入xml文件,和配置mvc各层package。
生成的prom.xml文件:
<!--加载全局页,项目欢迎页-->
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
配置项目的参数信息:
<properties>
</properties>
项目构建,运行环境配置
<build>
<plugin>
插件。jdk编译版本的插件
jdk的编译版本,和tomcat的版本
</plugin>
<resource>
资源
</resource>
</build>
项目依赖的jar包
<dependencies>
<dependency>
配置框架
在官网上面下
</dependency>
</dependencies>
比如配置ssm
<dependencies>
<!--spring-->
<!--springMvc-->
<!--mybatis-->
<!--log4j-->
<!--mysql-diver-->
<!--数据源 jdbc c3p0 druid德鲁伊-->
<!--jackson数据转换-->
</dependencies>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.senqi</groupId>
<artifactId>ProductManage</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>ProductManage</name>
<properties>
<webVersion>3.1</webVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.0.1.RELEASE</spring.version>
<mybatis.version>3.4.5</mybatis.version>
<jackson.version>2.9.3</jackson.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
<uriEncoding>utf-8</uriEncoding>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 红辣椒 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- ***********框架*********** -->
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.11</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- mybatis处理json格式:jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- mybatis代理:cglib代理 -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
</dependencies>
</project>
applicationContext.xml文件:
<!-- 1.使用placeHodler读取外部配置(数据库信息配置文件) -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 2.配置数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 3.创建sessionFactory对象 SqlSessionFactoryBean -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 3.1关联数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 3.2读取mybatis相关的配置信息(读取mybatis.cfg.xml文件) -->
<property name="configLocation" value="classpath:mybatis.cfg.xml" />
<!-- 3.3配置别名注解扫描(配置别名的类在什么包下:@Alias("user")) -->
<property name="typeAliasesPackage" value="com.senqi.entity" />
<!-- 3.4关联映射文件 -->
<property name="mapperLocations" value="classpath:com/senqi/mapper/*Mapper.xml" />
</bean>
<!-- 4.配置事务管理器 DataSourceTransactionManager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 5.tx事务模板 What -->
<tx:advice id="crudAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 从上往下匹配 When -->
<tx:method name="get*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="list*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 6.AOP相关的配置:切入事务 -->
<aop:config>
<!-- 6.1配置切入点 Where -->
<aop:pointcut expression="execution(* com.senqi.service..*.*(..))"
id="pointcut" />
<!-- 6.2把Where和What、When关联 -->
<aop:advisor advice-ref="crudAdvice" pointcut-ref="pointcut" />
</aop:config>
<!-- 7.基于注解:配置service,dao,web -->
<!-- 注解包扫描 -->
<context:component-scan base-package="com.senqi" />
<!-- Mapper接口扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.senqi.mapper" />
</bean>
1.使用placeHodler读取外部配置(数据库信息配置文件)
2.配置数据库连接池
3.创建sessionFactory对象 SqlSessionFactoryBean
3.1关联数据源
3.2读取mybatis相关的配置信息(读取mybatis.cfg.xml文件)
3.3配置别名注解扫描(配置别名的类在什么包下:@Alias(“user”))
3.4关联映射文件
4.配置事务管理器 DataSourceTransactionManager
5.tx事务模板 What
6.AOP相关的配置:切入事务
7.基于注解:配置service,dao,web
注解包扫描
context:component-scan base-package=“com.senqi”
Mapper接口扫描器
其他xml文件不做阐述
配置文件的地方
web.xml文件的地方
配置mvc层:
三,写一个简单的商城系统。
简单不做阐述
第一个点:
ajax注册验证登录名是否存在
<script src="<%=request.getContextPath() %>/js/jquery-3.1.1.min.js" type="text/javascript"></script>
jquery导入
<table>
<tr>
<td>账号:</td>
<td>
<input type="text" name="loginName" onblur="checkName(this)"/>
<br/>
<span id="msg"></span>
</td>
</tr>
table片段 在登录名中的触发onblur。
<script type="text/javascript">
function checkName(obj) {
var val = obj.value;
// 如果输入的内容不为空
if(val) {
// 发送ajax判断
$.post("checkName", {loginName: val}, function(data){
if(data) {
$("#msg").html("用户名已存在");
$("[type=submit]").attr("disabled", "disabled");
} else {
$("#msg").html("");
$("[type=submit]").removeAttr("disabled");
}
}, "json");
}
/* attr("disabled"这句话的意思是如果用户名已经被占用,[type=submit]类型选择器找到对应是提交按钮然后屏蔽按钮 ,相对应的如果成功则取消屏蔽*/
}
</script>
/**
* 用户名的判重
* @param loginName
* @return
*/
@RequestMapping("/checkName")
@ResponseBody
public String checkName(String loginName) {
User result =us.checkName(loginName);
String flag = "";
if(result != null) {
flag = "true";
} else {
flag = "false";
}
return flag;
}
controller层
第二个点:
登录时判断登录帐号和密非空
<form method="post" action="add" onsubmit="return check()">
<script>
function check() {
var username = document.getElementById("uname");
var password = document.getElementById("upwd");
if (username.value == "") {
alert("用户名不能为空!");
return false;
} else if (password.value == "") {
alert("密码不能为空!");
return false;
return true;
}
}
</script>
第三个点
在maper中参数传递是否使用注解:
User getUserBaaNameAndPwd(User user);
User getUserByName(String loginName);
void save(User user);
User selectByName(@Param("uname") String uname);
在多参数中,可以直接用对象传递,不需要注解。单参数可以直接用,也不需要注解。只有在多个参数中(如果两个参数在不同的类中,如果多个参数都在同一类(比如user对象)直接传对象 也不需要参数)才会使用。