一、搭建SpringMVC+Spring+JDBC框架
1、加入Spring、SpringMVC、数据库驱动等相关jar文件
首先将database.properties文件复制到源文件夹下;
2、Spring配置文件
其次创建applicationContext-jdbc.xml文件,整合jdbc的配置文件;导入头,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<!-- 扫描包内的注解 让注解生效 扫描dao层和service层-->
<context:component-scan base-package="cn.smbms"></context:component-scan>
</beans>
3、配置web.xml
配置web.xml文件;引入相关Spring的配置文件并使用监听器启动Spring
<?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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SpringMVC42</display-name>
<!-- -->
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
<!-- 引入相关spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<!-- 使用监听器启动Spring -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 1.配置Servlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 2.加载配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--3. 加载次序(优先级) -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 4. -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
二、实现登录、注销功能
(一)、登录功能的实现:
1、改造dao层
需要dao层中的内容,在cn.smbms下创建dao包,把BaseDao类粘过来,再次包内建user包,包中建userDao和userDaoImpl;再讲user实体拷贝到pojo包下;
2、改造service层
再在cn.smbms包下新建service包,再建user包,再将关于user的UserService和UserServiceImpl拷贝过来;将其中的myBatis方法注释掉。在UserDaoImpl上加入注解@Repository
;在UserServiceImpl上加入注解@Service;然后UserDao属性上加入注解@Autowired,再补全get/set方法
3、复制login.jsp文件到jsp文件夹下,然后在web.xml文件中放开
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
首先看一下能否访问到login界面;直接在网页输入127.0.0.1:8080/SpringMVC42/
4、改造controller层
补全controller层中的代码,新建一个commonController类,公共的controller模块
package cn.smbms.controller;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.smbms.pojo.User;
import cn.smbms.service.user.UserService;
import cn.smbms.tools.Constants;
//公共的controller模块
@Controller
@RequestMapping("/common")
public class CommonController {
//默认访问Controller中的login.html也能跳转到登录界面
@RequestMapping("/login.html")
public String login(){
return "login";
}
}
要将springmvc-servlet中的多个控制器映射修改
在网页输入127.0.0.1:8080/SpringMVC42/common/login.html
5、将login.jsp页面中的form提交地址改为/common/login.do
6、在CommonController类中写入方法,
在该类中创建userService属性,上面加上注解@Autowired
写完登录成功,看其跳转位置,然后将头脚文件的frame.jsp文件,三个文件拷贝过来,将/jsp/去掉;
@Autowired
UserService userService;
@RequestMapping("/login.do")
public String doLogin(String userCode,String userPassword){
//登录验证,查库,
User user = userService.login(userCode, userPassword);
if(user == null){
//登录失败
map.put("error", "用户名或密码错误");
return "login";//登录失败跳转回登录界面
}else{
//登录成功
return "frame";
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
7、ServletAPI作为参数的使用
新建tools包,将Constants文件拷贝进来,实现登录界面显示欢迎**
8、在common中写入session;后面添加参数
@RequestMapping("/login.do")
public String doLogin(String userCode,String userPassword,Map<String, Object> map,HttpSession session){
//登录验证,查库,
User user = userService.login(userCode, userPassword);
if(user == null){
//登录失败
map.put("error", "用户名或密码错误");
return "login";
}else{
//登录成功
//获得session中的当前用户信息,在网页显示,欢迎***
session.setAttribute(Constants.USER_SESSION, user);
return "frame";
}
}
9、除了跳转到界面,还可以跳转到处理类中;
新建一个UserController;回到CommonController中,修改登录成功后的跳转地址。
//重定向使用
@Controller
@RequestMapping("/user")
public class UserController {
//frame主页面方法
@RequestMapping("/main.html")
public String main(HttpSession session){
//只要进入到/user内,都要进行权限校验
if(session.getAttribute(Constants.USER_SESSION) == null){
//未登录状态,跳转到login界面
return "login";
}else{
return "frame";
}
}
}
@RequestMapping("/login.do")
public String doLogin(String userCode,String userPassword,Map<String, Object> map,HttpSession session){
//System.out.println("模拟异常无论是否输入正确,只要点登陆就报error.jsp"+1/0);
//登录验证,查库,
User user = userService.login(userCode, userPassword);
if(user == null){
//登录失败
map.put("error", "用户名或密码错误");
return "login";
}else{
//登录成功
//获得session中的当前用户信息,在网页显示,欢迎***
session.setAttribute(Constants.USER_SESSION, user);
//不直接写了,采用重定向,地址栏发生变化
return "redirect:/user/main.html";
}
}
10、引入静态资源文件
创建包和拷贝文件
然后login.jsp文件中引入了哪些样式,Link引入了css,需要修改其路径
配置静态资源管理器—引入静态资源文件
springmvc-servlet中加入
<!-- 配置静态资源管理器;引入静态资源文件 mapping请求的url地址 ;location本地工程路径-->
<mvc:resources location="/statics/" mapping="/statics/**"></mvc:resources>
11、引入全局异常
在springmvc-servlet中引入异常处理机制
<!-- 配置全局异常,引入异常处理机制 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">error</prop>
</props>
</property>
</bean>
测试一下如何生效,新建一个error.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>系统维护中,请稍后再试</h1>
</body>
</html>
在CommonController中,doLogin方法内,只要一点击登录,直接输出个错误
System.out.println(“模拟异常无论是否输入正确,只要点登陆就报error.jsp”+1/0);
12、登录之后的样式修改
首先是frame.jsp页面,images路径前要加上statics
其次是head.jsp页面
然后是foot,jsp界面
重新登录之后,页面有样式
(二)、退出功能
1、找到退出按钮有哪几个?head中有一个退出,路径改一下,
2、再从headl里找到退出系统字样,修改其路径
3、到CommonController中加入退出方法
@RequestMapping("/logout")
public String logout(HttpSession session){
//退出前要清空session
session.removeAttribute(Constants.USER_SESSION);
return "login";
}
三、查询用户列表
(一)、实现点击用户管理,显示界面,内容可以暂时没有
1、首先在head里找到用户管理,修改路径
2、在UserController 中,写入方法
package cn.smbms.controller;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.smbms.tools.Constants;
//重定向使用
@Controller
@RequestMapping("/user")
public class UserController {
//frame主页面方法
@RequestMapping("/main.html")
public String main(HttpSession session){
//只要进入到/user内,都要进行权限校验
if(session.getAttribute(Constants.USER_SESSION) == null){
//未登录状态,跳转到login界面
return "login";
}else{
return "frame";
}
}
//登录后点击用户管理能进去,但没数据
@RequestMapping("/userList")
public String userList(){
return "userlist";
}
}
3、将userlist.jsp文件拷到本工程jsp文件夹下;去掉/jsp/;最下面引入js前要加上statics/;
4、再讲rollpage.jsp拷贝过来,最后面有一个引入js,前面加上statics/
登录后点击用户管理
provider和bill操作步骤和user相同,只是相应的**Controller类中,不需要main主方法;注意将其中的引入的js/images/css/calendar修改,只需在前面加上statics/