ssj:Spring&springmvc&jdbc
这里面只有代码,说明看注释吧
图解
代码
从上向下,顺序应为实体层—>dao层—>业务层—>测试层—>工具包及处理器包—>控制层
另外还需导入jar包及xml文件:applicationContext-jdbc.xml、springmvc-servlet.xml
c3p0.properties或者database.properties
工具包及处理器包自己备用的
- 控制层
controller
package com.offcn.controller;
import com.offcn.entity.User;
import com.offcn.service.UserService;
import com.offcn.util.EmptyUtils;
import com.offcn.util.PageUtils;
import net.sf.json.JSONArray;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@Controller
@RequestMapping("/userController")
public class UserController {
@Resource
private UserService userService;
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String loginIn(@RequestParam(value = "uname",required = false) String uname,
@RequestParam(value = "upwd",required = false) String upwd, Model model){
User user = userService.selectByName(uname,upwd);
if (user != null) {
model.addAttribute("user",user);
/*redirect:重定向*/
/*forward:转化,默认转化*/
return "redirect:toPage";
}
return "error";
}
//pageUtils 返回值一样
@RequestMapping("/toPage")
public String toPage(@RequestParam(value = "currentPageNo",required = false) String currentPageNo,
@RequestParam(value = "pageSize",required = false) String pageSize,
@RequestParam(value = "queryWord",required = false) String queryWord,Model model){
//第一次或者没有的时候,就显示首页
if (currentPageNo == "" || currentPageNo==null) {
currentPageNo="1";
}
//如果没有数据就给它赋值
if (pageSize == null || pageSize=="") {
pageSize="5";
}
PageUtils pageUtils = new PageUtils();
pageUtils.setCurrentPageNo(Integer.parseInt(currentPageNo));
pageUtils.setPageSize(Integer.parseInt(pageSize));
if (EmptyUtils.isNotEmpty(queryWord)) {
pageUtils.setQueryWord(queryWord);
}
//给其赋值
//获取查询出来的集合
List<User> userList = userService.selctAllUser(pageUtils);
//查询总记录数
Integer totalCount = userService.selectUserCount(pageUtils);
//计算总页数
Integer totalPageSize = totalCount %Integer.parseInt(pageSize)==0?totalCount/Integer.parseInt(pageSize):totalCount/Integer.parseInt(pageSize)+1;
//把所有的全部赋值到utils
// pageUtils.setCurrentPageNo(Integer.parseInt(currentPageNo));
// pageUtils.setPageSize(Integer.parseInt(pageSize));
pageUtils.setTotalCount(totalCount);
pageUtils.setTotalPageSize(totalPageSize);
pageUtils.setUserList(userList);
model.addAttribute("pageUtils",pageUtils);
return "showInfo";
}
/*去增加*/
@RequestMapping("toAdd")
public String toAdd(){
return "addUser";
}
/*增加*/
@RequestMapping("add")
public String add(@RequestParam(value = "uname",required = false) String uname,
@RequestParam(value = "upwd",required = false) String upwd ,
@RequestParam(value = "usex",required = false) String usex){
User user = new User();
user.setUname(uname);
user.setUpwd(upwd);
if (usex.equals("male")) {
user.setUsex(1);
}else if (usex.equals("female")){
user.setUsex(0);
}
/*user.setUsex(Integer.parseInt(usex));*/
int num = userService.insertUser(user);
if (num > 0) {
return "redirect:toPage";
}
return "toAdd";
}
/*去修改*/
@RequestMapping("toUpdate")
public String toUpdate(@RequestParam(value = "uid",required = false) String uid,
@RequestParam(value = "uname",required = false) String uname,
@RequestParam(value = "upwd",required = false) String upwd,
@RequestParam(value = "usex",required = false) String usex,
Model model){
User user = new User();
user.setUid(Integer.parseInt(uid));
user.setUname(uname);
user.setUpwd(upwd);
user.setUsex(Integer.parseInt(usex));
model.addAttribute("user",user);
return "/updateUser";
}
/*修改*/
@RequestMapping("update")
public String update(@RequestParam(value = "uid",required = false) String uid,
@RequestParam(value = "uname",required = false) String uname,
@RequestParam(value = "upwd",required = false) String upwd,
@RequestParam(value = "usex",required = false)String usex){
User user = new User();
user.setUid(Integer.parseInt(uid));
user.setUname(uname);
user.setUpwd(upwd);
if (usex.equals("male")) {
user.setUsex(1);
}else if (usex.equals("female")){
user.setUsex(0);
}
/*user.setUsex(Integer.parseInt(usex));*/
int num = userService.updateUser(user);
if (num > 0) {
return "redirect:toPage";
}
return "toUpdate";
}
/*去删除*/
/*ajax 请求是不需要返回值的:Ajax异步刷新不需跳转*/
@RequestMapping("toDelete")
@ResponseBody
public void toDelete(@RequestParam(value = "uid",required = false) String uid, HttpServletResponse response){
userService.delectUser(Integer.parseInt(uid));
System.out.println(uid);
}
//模糊查询
@RequestMapping("toFindLike")
@ResponseBody
public void toFindLike(@RequestParam(value = "str",required = false) String str,HttpServletResponse response){
try {
if (EmptyUtils.isEmpty(str)){
response.getWriter().print("location.href=\"toPage\"");
}
List<User> userList = userService.getUsersLike(str);
JSONArray json =JSONArray.fromObject(userList);
response.getWriter().print(json.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
- dao层及其实现层
dao
、impl
package com.offcn.dao;
import com.offcn.entity.User;
import com.offcn.util.PageUtils;
import java.util.List;
public interface UserDao {
/*根据用户名查询*/
User selectByName(String uname);
//获取数据,第一个数据为当前页,第二个为页面数据量
List<User> selctAllUser(PageUtils pageUtils);
//查询总记录数
Integer selectUserCount(PageUtils pageUtils);
//增加一条数据
int insertUser(User user);
//修改一条数据
int updateUser(User user);
//根据id删除一条数据
int delectUser(int uid);
/**
* 模糊查询
* @param str 姓名的任意字段
* @return
*/
List<User> getUsersLike(String str);
}
package com.offcn.dao.impl;
import com.offcn.dao.UserDao;
import com.offcn.entity.User;
import com.offcn.handle.ArrayResultHandler;
import com.offcn.handle.BeanListResultHandler;
import com.offcn.handle.BeanResultHandler;
import com.offcn.util.BaseDao;
import com.offcn.util.EmptyUtils;
import com.offcn.util.PageUtils;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public User selectByName(String uname) {
String sql = "select * from user where uname=?";
User user = (User) BaseDao.executeQuery(sql,new Object[]{uname},new BeanResultHandler(User.class));
return user;
}
@Override
public List<User> selctAllUser(PageUtils pageUtils) {
String sql = "select * from user where 1=1";
StringBuffer sb = new StringBuffer(sql);
/*定义一个存占位符的集合*/
List<Object> list = new ArrayList<Object>();
//首先判断是否需要查询
if (EmptyUtils.isNotEmpty(pageUtils.getQueryWord())){
//拼接sql语句
sb.append(" and uname like ?");
list.add("%"+pageUtils.getQueryWord()+"%");
}
//排序
//分页查询
if (EmptyUtils.isNotEmpty(pageUtils.getCurrentPageNo())) {
sb.append(" limit ?,?");
list.add((pageUtils.getCurrentPageNo()-1)*pageUtils.getPageSize());
list.add(pageUtils.getPageSize());
}
List<User> userList = (List<User>) BaseDao.executeQuery(sb.toString(),list.toArray(),new BeanListResultHandler(User.class));
return userList;
}
@Override
public Integer selectUserCount(PageUtils pageUtils) {
String sql = "select count(1) from user where 1=1";
StringBuffer sb = new StringBuffer(sql);
/*定义一个存占位符的集合*/
List<Object> list = new ArrayList<Object>();
//首先判断是否需要查询
if (EmptyUtils.isNotEmpty(pageUtils.getQueryWord())){
//拼接sql语句
sb.append(" and uname like ?");
list.add("%"+pageUtils.getQueryWord()+"%");
}
List<User> userList = (List<User>) BaseDao.executeQuery(sb.toString(),list.toArray(),new ArrayResultHandler());
String count = userList.get(0)+"";
return Integer.parseInt(count);
}
/*@Override
public List<User> selctAllUser(Integer currentPageNo, Integer pageSize) {
String sql = "select * from user limit ?,?";
List<User> userList = (List<User>) BaseDao.executeQuery(sql,new Object[]{(currentPageNo-1)*pageSize,pageSize},new BeanListResultHandler(User.class));
return userList;
}*/
/*@Override
public Integer selectUserCount(P) {
String sql = "select count(1) from user";
List<User> list = (List<User>) BaseDao.executeQuery(sql,null,new ArrayResultHandler());
String count = list.get(0)+"";
return Integer.parseInt(count);
}*/
@Override
public int insertUser(User user) {
String sql = "insert into user(uname,upwd,usex) values(?,?,?)";
Object[] objects = {user.getUname(),user.getUpwd(),user.getUsex()};
int num = BaseDao.executeUpdate(sql,objects);
return num;
}
@Override
public int updateUser(User user) {
String sql = "update user set uname = ?,upwd = ?,usex = ? where uid = ?";
Object[] objects = {user.getUname(),user.getUpwd(),user.getUsex(),user.getUid()};
int num = BaseDao.executeUpdate(sql,objects);
return num;
}
@Override
public int delectUser(int uid) {
String sql = "delete from user where uid = ?";
int num = BaseDao.executeUpdate(sql,new Object[]{uid});
return num;
}
@Override
public List<User> getUsersLike(String str) {
String sql = "select * from user where uname like '%?%'";
List<User> userList = (List<User>) BaseDao.executeQuery(sql,new Object[]{str},new BeanListResultHandler(User.class));
return userList;
}
}
- 实体层
entity
package com.offcn.entity;
import java.io.Serializable;
public class User implements Serializable {
private int uid;
private String uname;//用户名
private String upwd;//密码
private int usex;//性别
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public int getUsex() {
return usex;
}
public void setUsex(int usex) {
this.usex = usex;
}
}
- 处理器
handle
处理器就不写代码了
处理器下载
6. 业务层及其实现层service
、impl
package com.offcn.service;
import com.offcn.entity.User;
import com.offcn.util.PageUtils;
import java.util.List;
public interface UserService {
/*根据用户名查询*/
User selectByName(String uname,String upwd);
//获取数据,第一个数据为当前页,第二个为页面数据量
List<User> selctAllUser(PageUtils pageUtils);
//查询总记录数
Integer selectUserCount(PageUtils pageUtils);
//增加一条数据
int insertUser(User user);
//修改一条数据
int updateUser(User user);
//根据id删除一条数据
int delectUser(int uid);
/**
* 模糊查询
* @param str 姓名的任意字段
* @return
*/
List<User> getUsersLike(String str);
}
package com.offcn.service.impl;
import com.offcn.dao.UserDao;
import com.offcn.entity.User;
import com.offcn.service.UserService;
import com.offcn.util.PageUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User selectByName(String uname, String upwd) {
User user = userDao.selectByName(uname);
//判断是否登录成功
if (user.getUpwd().equals(upwd)) {
return user;
}
return null;
}
@Override
public List<User> selctAllUser(PageUtils pageUtils) {
return userDao.selctAllUser(pageUtils);
}
@Override
public Integer selectUserCount(PageUtils pageUtils) {
return userDao.selectUserCount(pageUtils);
}
@Override
public int insertUser(User user) {
return userDao.insertUser(user);
}
@Override
public int updateUser(User user) {
return userDao.updateUser(user);
}
@Override
public int delectUser(int uid) {
return userDao.delectUser(uid);
}
@Override
public List<User> getUsersLike(String str) {
return userDao.getUsersLike(str);
}
}
- 测试层
text
package com.offcn.text;
import com.alibaba.fastjson.JSON;
import com.offcn.dao.UserDao;
import com.offcn.dao.impl.UserDaoImpl;
import com.offcn.entity.User;
import com.offcn.util.PageUtils;
import java.util.ArrayList;
import java.util.List;
public class Text {
public static void main(String[] args) {
/*UserDao userDao = new UserDaoImpl();
PageUtils pageUtils = new PageUtils();
pageUtils.setQueryWord("a");
pageUtils.setCurrentPageNo(1);
pageUtils.setPageSize(5);
List<User> list = userDao.selctAllUser(pageUtils);
for (User u:list) {
System.out.println(u.getUname()+"\t"+u.getUpwd());
}*/
//把集合对象转化为json
List<User> list = new ArrayList<User>();
User u1 = new User();
u1.setUserName("asd");
u1.setEmail("132132321@163.com");
User u2 = new User();
u2.setUserName("zxc");
u2.setEmail("464654645@163.com");
list.add(u1);
list.add(u2);
String str = JSON.toJSONString(list);
System.out.println(str);
System.out.println("*******************************");
List<User> userList = JSON.parseArray(str,User.class);
for (User u:userList) {
System.out.println(u.getUserName()+"\t"+u.getEmail());
}
System.out.println("+++++++++++++++++++++++++++++++++");
String s1 = JSON.toJSONString(u1);
System.out.println(s1);
}
}
- 工具类
util
工具类就不写代码了
- xml文件配置
applicationContext-jdbc.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"
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-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--
使spring扫描包下的所有类,让标注spring注解的类生效
-->
<context:component-scan base-package="com.offcn.service"/>
<context:component-scan base-package="com.offcn.dao"/>
</beans>
springmvc-servlet.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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.offcn.controller"/>
<mvc:annotation-driven/>
<!--默认springmvc是不会加载静态文件,需要你来手动加载,location:当地路径,mapping:代表匹配的文件,**代表所有文件-->
<mvc:resources location="/statics/" mapping="/statics/**"></mvc:resources>
<!-- 完成视图的对应 -->
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>