需要的jar包:
要完成一个简单的增删改查首先要有明确的思路:
因为用到springMVC框架,所以我们看一下他的流程:
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
1.先完成对web.xml 的配置,其实简单的一些增删改查不用配置太多;
(1) 配置中央控制器(也是前端控制器)DispatcherServlet
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet><!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
又因为和前端含接就有请求和响应,那么就有可能出现请求或者是响应的中文乱码,所以我配置了
filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
配置完web.xml
在配置springMVC.xml
先配置一个扫描包的代码:
<context:component-scan base-package="com.lcg.spring.springmvc.shujuku"></context:component-scan>
"com.lcg.spring.springmvc.shujuku" 为包名
在配置一个视图解析器:
<bean id ="viewResolver" class ="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value =".jsp"></property>
<property name="prefix" 这个是设置springMVC视图解析器viewResolver的前缀
<property name="suffix" 这个是设置springMVC视图解析器viewResolver的后缀
配置完了,就不多说了,上代码:
index.jsp 是完成注册功能
Dao java 代码
package com.lcg.spring.springmvc.shujuku.Dao;
import java.util.List;
import com.lcg.spring.springmvc.shujuku.bean.User;
public interface Dao {
public boolean insert(User user);//录入信息
public boolean delete(String name);//删除信息
public boolean update(String name, User user);//修改信息
public List<User> queryAll() throws ClassNotFoundException;//查询全部信息
public User query(String name) throws ClassNotFoundException;//查询个人信息
}
UserDao 代码:
package com.lcg.spring.springmvc.shujuku.Dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.lcg.spring.springmvc.shujuku.bean.User;
import com.lcg.spring.springmvc.shujuku2.DBUtil.DBUtil;
import com.sun.org.apache.regexp.internal.recompile;public class UserDao implements Dao{
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
String URL = "Jdbc:mysql://localhost:3306/读取?characterEncoding=utf-8";//连接数据库语句
String us = "root";
String pa = "021117";public List<User> queryAll() throws ClassNotFoundException {
List<User> users = new ArrayList<>();//设置一个集合
User user = null;
try {
String sql = "select *from zhuci";//数据库的查询语句
rs= DBUtil.executeQuery(sql, null);//调用DBUtil帮助类来驱动
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String password = rs.getString("password");
user = new User(id, name, password);
users.add(user);
System.out.println(user);
}
return users;
// System.out.println("注册成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}finally {
try {
if(rs!=null) rs.close();//关闭接口
if(pre!=null)pre.close();
if(DBUtil.conn!=null) DBUtil.conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
public User query(String name) throws ClassNotFoundException {//查询个人信息
User user = null;
try {
String sql = "select *from zhuci where name =?";//查询个人信息的数据库语句
Object [] prean = {name};
rs = DBUtil.executeQuery(sql, prean);
System.out.println(rs);
if (rs.next()) {
String id = rs.getString("id");
String names = rs.getString("name");
String password = rs.getString("password");user = new User(id, names, password);
}//System.out.println(user);
return user;
// System.out.println("注册成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}finally {
try {
if(rs!=null) rs.close();
if(pre!=null)pre.close();
if(DBUtil.conn!=null) DBUtil.conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
public String denglu(String name ,String password)
{
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, us, pa);
String sql = "select *from zhuci where name= ?and password=?";//登陆的查询语句
pre = conn.prepareStatement(sql);//预编译数据库语句
pre.setString(1, name);
pre.setString(2, password);
rs = pre.executeQuery();//获得查询到的内容
if (rs.next()) {
System.out.println("此账号存在,允许登陆");
return "1";
}else {
System.out.println("此账号不存在,不允许登陆,登陆失败");
return "0";
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "0";
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "0";
}
}@Override
public boolean insert(User user) {
String sql ="insert into zhuci (id,name ,password) values (?,?,?)";//录入语句
Object [] prean = {user.getId(),user.getName(),user.getPassword()};把要录入的信息放到prean数组中
return DBUtil.executeUpdate(sql, prean);//调用帮助类驱动数据库语句
}
@Override
public boolean delete(String name) {
// TODO Auto-generated method stub
String sql ="delete from zhuci where name = ?";//删除数据库语句
Object [] prean = {name};
return DBUtil.executeUpdate(sql, prean);
}
@Override
public boolean update(String name, User user) {
// TODO Auto-generated method stub
String sql ="update zhuci set id =?,password =? where name =?";//修改数据库语句
Object [] prean = {user.getId(),user.getPassword(), name};
return DBUtil.executeUpdate(sql, prean);
}
}
java链接MySQL的优化:DBUtil
package com.lcg.spring.springmvc.shujuku2.DBUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.lcg.spring.springmvc.shujuku.bean.User;
public class DBUtil {
private static final String URL = "Jdbc:mysql://localhost:3306/读取?characterEncoding=utf-8";
private static final String us = "root";
private static final String pa = "021117";
public static Connection conn = null;
public static PreparedStatement pre = null;
public static ResultSet rs = null;
public static boolean executeUpdate(String sql,Object [] prean) {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, us, pa);
pre = conn.prepareStatement(sql);
if (prean!=null) {
for (int i = 0; i < prean.length; i++) {
pre.setObject(i+1, prean[i]);
}
}
int count = pre.executeUpdate();
System.out.println(count);
if (count>0) {
return true;
}else {
return false;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}finally {
try {
if(pre!=null)pre.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static ResultSet executeQuery(String sql,Object [] prean) {
User user = null;
List<User> users = new ArrayList<>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, us, pa);
pre = conn.prepareStatement(sql);
if (prean!=null) {
for (int i = 0; i < prean.length; i++) {
pre.setObject(i+1, prean[i]);
}
}
rs = pre.executeQuery();
return rs;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}}
中央控制器代码servleet:
package com.lcg.spring.springmvc.shujuku.servlet;
import java.io.UnsupportedEncodingException;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import com.lcg.spring.springmvc.shujuku.Dao.UserDao;
import com.lcg.spring.springmvc.shujuku.bean.User;import sun.security.util.Password;
@Controller
public class Servleet {
@RequestMapping(value = "/denglu", method = RequestMethod.POST)//设置路径和获取的方法
public String denglu(User user, HttpServletRequest request ) throws UnsupportedEncodingException {
request.setCharacterEncoding("utf-8");//设置请求的字符编码
String id = request.getParameter("userid");//从jsp表单中获取内用
String name = request.getParameter("username");//从jsp表单中获取内用
String password = request.getParameter("userpassword");//从jsp表单中获取内用
user = new User(id, name, password);//把获取到的内容放到User中request .setAttribute("user", user);//把user放到request域中,方便表单中获取java中的数据
System.out.println(user);
UserDao dao = new UserDao();//把UserDao进行实例化
boolean result = dao.insert(user);
if (!result) {//判断
return "sibai";
} else {
System.out.println("录入成功");
return "success";
}}
@RequestMapping("/queryall")//设置访问的路径
public String queryall (HttpServletRequest request) throws ClassNotFoundException {
UserDao dao = new UserDao();//把UserDao进行实例化
List<User> users = dao.queryAll();//把从数据库中获取到的数据放到List集合中
System.out.println(users);
request.setAttribute("users", users);//把user放到request域中,方便表单中获取java中的数据
return "Login";//运行成功后返回的路径
}@RequestMapping("/delete")//设置访问的路径
public String delete(String name,HttpServletRequest request) {
UserDao dao = new UserDao();
name = request.getParameter("username");
boolean result =dao.delete(name);
if (!result) {
return "Login";
}
return "delete";
}
@RequestMapping("/query")
public String query(String name ,HttpServletRequest request) throws ClassNotFoundException {
UserDao dao = new UserDao();
name = request.getParameter("username");
User user = dao.query(name);
request.setAttribute("user", user);
System.out.println(user);
return "user";
}
@RequestMapping("/queryupdate")
public String queryupdate(String name ,HttpServletRequest request) throws ClassNotFoundException {
UserDao dao = new UserDao();
name = request.getParameter("username");
User user = dao.query(name);
request.setAttribute("user", user);
//System.out.println(user);
return "update";
}
@RequestMapping("/update")
public String update(String name,User user ,HttpServletRequest request) {
UserDao dao = new UserDao ();
name = request.getParameter("username");
String id = request.getParameter("userid");
String password = request.getParameter("userpassword");
user = new User (id,password);
System.out.println("user+"+user);
boolean result=dao.update(name, user);
System.out.println(result);
if (!result) {
return "update";
}
return "updatesuccess";
}
@RequestMapping("/deng")
public String denglu(String name,String password,HttpServletRequest request) {
UserDao dao = new UserDao();
name = request.getParameter("username");
password = request.getParameter("userpassword");
System.out.println(name);
System.out.println(password);
String result = dao.denglu(name, password);
if (result=="1") {
return "chenggong";
}else {
return "defult";
}
}
}
登陆代码denglu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>登陆界面</h1>
<form action="deng" method = "post">
账号: <input type = "text" name = "username"/><br>
密码:<input type = "password" name = "userpassword"/><br>
<input type = "submit" value = "登陆"/>
</form>
</body>
</html>
这是主页面:也就是查询全部学生的显示页面
Login.jsp
<%@page import="com.lcg.spring.springmvc.shujuku.bean.User"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>主页面</h1>
<table border="1px">
<tr>
<th>学号</th>
<th>姓名</th>
<th>密码</th>
<th>操作</th>
<th>操作</th>
</tr>
<%
//获取request 域中的数List<User> users =(List<User>) request.getAttribute("users");
for(User user : users){
%>把获取到的数据放进表格中
<tr>
<td><%=user.getId() %></td>
<td><a href ="query?username=<%=user.getName() %>"><%=user.getName() %></a></td>//设置一个超链接访问查询个人的信息的内容
<td><%=user.getPassword() %></td>
<td><a href ="delete?username=<%= user.getName()%>" >删除</a></td>//设置一个超链接方便进行对该名字的信息进行删除
<td><a href ="queryupdate?username=<%= user.getName()%>" >修改</a></td>/设置一个超链接方便进行对该名字的信息进行修改
</tr>
<%
}
%>
</table>
<a href ="index.jsp"> 注册信息</a>
</body>
</html>
这是显示修改页面的jsp 代码
update.jsp
<%@page import="com.lcg.spring.springmvc.shujuku.bean.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><%
User user =(User)request.getAttribute("user"); //获取request域中的内容
%>
<form action="update">//设置访问的路径
学号:<input type ="text" name = "userid" value ="<%=user.getId()%>" /><br/>
姓名:<input type ="text" name = "username" value ="<%=user.getName() %>" readonly="readonly"/><br/>
密码:<input type ="text" name = "userpassword" value ="<%=user.getPassword() %>"/><br/>
<a href = "queryall">返回</a>//设置一个超链接方便返回主界面<input type = "submit" value = "修改" />
</form>
</body>
</html>
这是查询个人信息的jsp页面代码:
user.jsp
<%@page import="com.lcg.spring.springmvc.shujuku.bean.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><%
User user =(User)request.getAttribute("user");//获取request域中的内容
%>
<form action="query">
学号:<input type ="text" name = "uid" value ="<%=user.getId()%>" /><br/>
姓名:<input type ="text" name = "uname" value ="<%=user.getName() %>" readonly="readonly"/><br/>
年龄:<input type ="text" name = "uage" value ="<%=user.getPassword() %>"/><br/>
<a href = "queryall">返回</a>
</form></body>
</html>
此为登陆失败的代码;
defult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>登陆失败</h1>
<%
response.setHeader("refresh", "0.02;URL=denglu.jsp");//此为页面定时跳转,0.02秒后主动跳转到登陆页面让你重新登陆
%>
</body>
</html>
最后是效果图了
希望对你们有帮助