MVC框架是由Model模型(JavaBean),View视图(Jsp) 和 Controller控制器(Servlet)构成。
其中每一部分的作用为:
Controller层(springMVC)通过要调用Service层的接口来控制业务流程,负责url映射(action),控制界面跳转。
Service层(Spring)负责业务模块的逻辑应用设计。首先设计其接口,然后再实现他的实现类(Serviceimpl类)。
通过对Spring配置文件中配置其实现的关联,完成此步工作,我们 就可以通过调用Service的接口来进行业务处理。最后通过调用DAO层已定义的接口,去实现Service具体的实现类。
Dao层/Mapper层(Mybatis)负责与数据库进行交互设计,用来处理数据的持久化工作。DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,就可在其他模块中调用此接口来进行数据业务的处理,而不用关心接口的具体实现类是哪个类,这里用到的就是反射机制, DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
View层(视图层)负责前台jsp页面的展示。
简单的用户管理项目:实现用户登录注册,以及对用户信息的增删改查功能。
1.login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
登录页面
2.registration.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
修改用户信息页面
User Management
3.userList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
User Management
4.userEdit.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
修改用户信息页面
User Management
5.error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
错误页面
错误页面
6.success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
登陆成功
登陆成功
7.Login.java
package com.javen.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.javen.vo.UserVO;
import com.javen.model.User;
import com.javen.service.IuserInfoService;
@Controller
@RequestMapping("/user")
public class Login {
@Autowired
private IuserInfoService login;
@RequestMapping("index")
public String Index() {
return "login";
}
@RequestMapping(value = "/userlogin")
public String user(HttpServletRequest request, Model model, UserVO userVo) {
System.err.println(userVo);
User select = login.selectByName(userVo.getUsername());
if(login.selectByAS(request.getParameter("username"), request.getParameter("password"))==1) {
request.getSession().setAttribute("userId", select.getUser_id());// 写入session
List selectAll = login.selectAll();
model.addAttribute("userList", selectAll);
return "userList";
}else {
return "error1";
}
}
@RequestMapping("/select")
public String select(HttpServletRequest request, Model model) {
System.err.println(request.getParameter("selectbyname"));
User a = login.selectByName(request.getParameter("selectbyname"));
List select=new ArrayList();
select.add(a);
System.err.println("查询"+select);
model.addAttribute("userList", select);
return "userList";
}
@RequestMapping("/userList")
public String userList(HttpServletRequest request, Model model, UserVO userVo) {
Object attribute = request.getSession().getAttribute("userId");
if (attribute != null) {
List selectAll = login.selectAll();
model.addAttribute("userList", selectAll);
System.err.println(attribute.toString());
return "userList";
}else {
return "user/index";
}
}
@RequestMapping("/toUpdate")
public String toUpdate(UserVO userVo, Model model) {
System.err.println(userVo);
User select = login.selectByName(userVo.getUsername());
model.addAttribute("user", select);
return "userEdit";
}
@RequestMapping("/update")
public String update(UserVO userVO, Model model) {
System.err.println(userVO);
User user = login.selectByName(userVO.getUsername());
//user.setUser_name(userVO.getUsername());//用户名不可修改,因为查询USER是按照用户名查找的
user.setUser_password(userVO.getPassword());
user.setUser_phonenum(userVO.getPhonenum());
System.err.println(user);
login.updateById(user);
List selectAll = login.selectAll();
model.addAttribute("userList", selectAll);
if (true) {
model.addAttribute("code", "200");
model.addAttribute("msg", "成功");
return "userList";
} else {
model.addAttribute("code", "500");
model.addAttribute("msg", "ssss更失败了");
return toUpdate(userVO, model);
}
}
@RequestMapping("/delete")
public String delete(UserVO userVO,Model model) {
System.err.println(userVO.getUserid());
login.deleteById(userVO.getUserid());
List selectAll = login.selectAll();
model.addAttribute("userList", selectAll);
/*
* if (true) { responseVO.setCode(200); responseVO.setMsg("sssss成功"); return
* "user/userList"; } else { responseVO.setCode(500); responseVO.setMsg("失败");
* return "error1"; }
*/
return "userList";
}
@RequestMapping("/registration")
public String registration() {
return "registration";
}
@RequestMapping("/useradd")
public String useradd(UserVO userVO,Model model) {
System.err.println(userVO);
User user=new User(userVO.getUsername(), userVO.getPassword(),"0",userVO.getPhonenum());
login.insert(user);
return "login";
}
}
8.UserMapping.java
package com.javen.dao;
import java.util.List;
import com.javen.model.User;
public interface UserMapper {
int deleteByPrimaryKey(Integer user_id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer user_id);
User selectByName(String user_name);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
List selectAll();
int selectByAS(String account, String password);
}
9.UserMapping.xml
user_id, user_name, user_password, user_Identity, user_phonenum
delete from user_information_copy1
where user_id = #{user_id,jdbcType=INTEGER}
insert into user_information_copy1 (user_name,user_password,user_Identity,user_phonenum)
values (#{user_name,jdbcType=VARCHAR}, #{user_password,jdbcType=VARCHAR},
#{user_Identity,jdbcType=VARCHAR}, #{user_phonenum,jdbcType=VARCHAR})
insert into "user_information_copy1"
user_id,
user_name,
user_password,
user_Identity,
user_phonenum,
#{user_id,jdbcType=INTEGER},
#{user_name,jdbcType=VARCHAR},
#{user_password,jdbcType=VARCHAR},
#{user_Identity,jdbcType=VARCHAR},
#{user_phonenum,jdbcType=VARCHAR},
update "user_information_copy1"
user_name = #{user_name,jdbcType=VARCHAR},
user_password = #{user_password,jdbcType=VARCHAR},
user_Identity = #{user_Identity,jdbcType=VARCHAR},
user_phonenum = #{user_phonenum,jdbcType=VARCHAR},
where user_id = #{user_id,jdbcType=INTEGER}
update "user_information_copy1"
set user_name = #{user_name,jdbcType=VARCHAR},
user_password = #{user_password,jdbcType=VARCHAR},
user_phonenum = #{user_phonenum,jdbcType=VARCHAR}
where user_name = #{user_name,jdbcType=VARCHAR}
update user_information_copy1
set user_name = #{user_name,jdbcType=VARCHAR},
user_password = #{user_password,jdbcType=VARCHAR},
user_Identity = #{user_Identity,jdbcType=VARCHAR},
user_phonenum = #{user_phonenum,jdbcType=VARCHAR}
where user_id = #{user_id,jdbcType=INTEGER}
10.User.java
package com.javen.model;
public class User {
private Integer user_id;
private String user_name;
private String user_password;
private String user_Identity;
private String user_phonenum;
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public User(String user_name, String user_password, String user_Identity, String user_phonenum) {
super();
this.user_name = user_name;
this.user_password = user_password;
this.user_Identity = user_Identity;
this.user_phonenum = user_phonenum;
}
public User() {
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name == null ? null : user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password == null ? null : user_password.trim();
}
public String getUser_Identity() {
return user_Identity;
}
public void setUser_Identity(String user_Identity) {
this.user_Identity = user_Identity == null ? null : user_Identity.trim();
}
public String getUser_phonenum() {
return user_phonenum;
}
public void setUser_phonenum(String user_phonenum) {
this.user_phonenum = user_phonenum == null ? null : user_phonenum.trim();
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password
+ ", user_Identity=" + user_Identity + ", user_phonenum=" + user_phonenum + "]";
}
}
11.IuserInfoService.java
package com.javen.service;
import java.util.List;
import com.javen.model.User;
public interface IuserInfoService {
int insert(User useradd);
int insertSelective(User useradd);
User selectById(Integer userid);
User selectByName(String user_name);
int deleteById(Integer userid);
int updateById(User useradd);
int selectByAS(String account,String password);
List selectAll();
}
12.IuserInfoServiceimpl
package com.javen.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.javen.dao.UserMapper;
import com.javen.model.User;
import com.javen.service.IuserInfoService;
@Service()
public class IuserInfoServiceimpl implements IuserInfoService {
@Autowired
private UserMapper userdao;
public int insert(User useradd) {
// TODO Auto-generated method stub
return this.userdao.insert(useradd);
}
public List selectAll() {
return this.userdao.selectAll();
}
public int selectByAS(String account, String password) {
if(userdao.selectByAS(account, password) == 1) {
return 1;
}
else {
return 0;
}
}
public int insertSelective(User useradd) {
// TODO Auto-generated method stub
return this.userdao.insertSelective(useradd);
}
public User selectById(Integer userid) {
// TODO Auto-generated method stub
return this.userdao.selectByPrimaryKey(userid);
}
public int deleteById(Integer userid) {
// TODO Auto-generated method stub
return this.userdao.deleteByPrimaryKey(userid);
}
public int updateById(User user) {
// TODO Auto-generated method stub
System.err.println("222"+user);
return this.userdao.updateByPrimaryKey(user);
}
public User selectByName(String user_name)
{
return this.userdao.selectByName(user_name);
}
}
13.UserVO.java
package com.javen.vo;
import java.util.Date;
public class UserVO {
private String username;
private String password;
private String phonenum;
private Integer userid;
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public String getPhonenum() {
return phonenum;
}
public void setPhonenum(String phonenum) {
this.phonenum = phonenum;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserVO [username=" + username + ", password=" + password + ", phonenum=" + phonenum + ", userid="
+ userid + "]";
}
}
14.web.xml
Archetype Created Web Application
contextConfigLocation
classpath:spring-mybatis.xml
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true
encoding
UTF-8
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
SpringMVC
/
/index.jsp
maven02
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
15.pom.xml
4.0.0
com.javen.maven02
maven02
war
0.0.1-SNAPSHOT
maven01 Maven Webapp
http://maven.apache.org
4.0.2.RELEASE
3.2.6
1.7.7
1.2.17
junit
junit
3.8.1
test
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.2
javax
javaee-api
7.0
mysql
mysql-connector-java
5.1.36
commons-dbcp
commons-dbcp
1.2.2
jstl
jstl
1.2
log4j
log4j
${log4j.version}
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
org.mybatis.generator
mybatis-generator-core
1.3.2
maven02
16.jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://Localhost:3306/car
username=root
password=123456
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
17.log4j.properties
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
18.spring-mvc.xml
text/html;charset=UTF-8
19.spring-mybatis.xml