实现功能:
(1)连接数据库,实现数据库中已存用户的成功登陆,或向数据库中添加未有的用户
(2)在界面中显示数据库中所有人名单
(3)管理员可以像数据库中添加用户,删除用户,修改用户
(4)修改用户实现表单的预读
(5)添加用户实现数据验证,并显示错误信息
相关实现:
(1)整体框架:
(2)web,xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
(3)spring-servlet.xml文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 打开基于注解的spring handler mapping -->
<mvc:annotation-driven />
<!-- 配置spring自动扫描所有的controller -->
<context:component-scan base-package="com.controller"></context:component-scan>
<!-- 配置spring mvc controller和view的映射关系 以及告知spring要使用jstl -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- spring配置全局异常的处理 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
<!-- 配置spring文件上传的 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="20000000"/>
</bean>
<!-- spring上配置mybatis的集成 -->
<!-- 配置加载数据连接资源文件的配置,把数据库连接数据抽取到一个properties资源文件中方便管理 -->
<context:property-placeholder location="/WEB-INF/assets/jdbc.properties"/>
<!-- 配置数据源 dbcp数据库连接池 可以配置初始连接数量,最大连接数量等等参数-->
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" 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}"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="${jdbc.initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${jdbc.maxActive}"></property>
</bean>
<!-- spring和MyBatis整合,mybatis配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/mapping/*.xml"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- spring搜索service服务类的包路径 -->
<context:component-scan base-package="com.service.impl"></context:component-scan>
<mvc:resources mapping="/resource/**" location="/resource/" />
</beans>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
(4)添加用户中的数据验证
UserController:
@RequestMapping(value={"/add"}, method=RequestMethod.POST)
public String add(@Validated User user, BindingResult result){
//jsr303数据验证的结果必须放在被验证对象紧跟的后面,中间不能添加额外的参数
if(result.hasErrors())
{
return "user/add";
}
if(!userService.saveUser(user)){
throw new RuntimeException("xxxxxxx");
}
return "redirect:/user/users";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
实现:(当添加的部分不合法时,会有相应的报错)
(5)修改用户时表单的预填
jsp页面:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
${user.name }
<fm:form method="post" modelAttribute="user">
name:<fm:input path="name" /><fm:errors path="name" /><br/>
pwd:<fm:input path="pwd" /><fm:errors path="pwd" /><br/>
phone:<fm:input path="phone" /><fm:errors path="phone" /><br/>
email:<fm:input path="email" /><fm:errors path="email" /><br/>
<input type="submit" value="修改">
</fm:form>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
实现:(修改某用户时,相应的信息预填在相应的框中)