所用软件 : IDEA . Tomcat . navicat
0 .设计过滤器,收到以及返回的参数过滤成浏览器可识别内容
package demo.filter;
import javax.servlet.*;
import java.io.IOException;
public class EncodingFilter implements javax.servlet.Filter {
public EncodingFilter(){
System.out.println("过滤器构造");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8"); //将编码改为utf-8
servletResponse.setContentType("text/html;charset=utf-8");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("过滤器销毁");
}
}
1 .封装项目中数据处理的方法
package demo.dao;
import demo.entity.User;
import java.util.List;
public interface UserDao {
public boolean login(String name,String pwd);//登录
public boolean register(User user);//注册
public List<User> getUserAll();//返回用户信息集合
public boolean delete(int id) ;//根据id删除用户
public boolean update(int id,String name, String pwd,String sex, String home,String info) ;//更新用户信息
}
package demo.dao;
import demo.entity.User;
import demo.util.DBconn;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl implements UserDao {
@Override
public boolean login(String name, String pwd) {
boolean flag = false;
try {
DBconn.init();
ResultSet rs = DBconn.selectSql("select * from user where name='" + name + "' and pwd='" + pwd + "'");
while (rs.next()) {
if (rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)) {
flag = true;
}
}
DBconn.closeConn();
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
@Override
public boolean register(User user) {
boolean flag = false;
DBconn.init();
int i = DBconn.addUpdDel("insert into user(name,pwd,sex,home,info) " +
"values('" + user.getName() + "','" + user.getPwd() + "','" + user.getSex() + "','" + user.getHome() + "','" + user.getInfo() + "')");
if (i > 0) {
flag = true;
}
DBconn.closeConn();
return flag;
}
@Override
public List<User> getUserAll() {
List<User> list = new ArrayList<User>();
try {
DBconn.init();
ResultSet rs = DBconn.selectSql("select * from user");
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
user.setSex(rs.getString("sex"));
user.setHome(rs.getString("home"));
user.setInfo(rs.getString("info"));
list.add(user);
}
DBconn.closeConn();
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public boolean delete(int id) {
boolean flag = false;
DBconn.init();
String sql = "delete from user where id=" + id;
int i = DBconn.addUpdDel(sql);
if (i > 0) {
flag = true;
}
DBconn.closeConn();
return flag;
}
@Override
public boolean update(int id, String name, String pwd, String sex, String home, String info) {
boolean flag = false;
DBconn.init();
String sql = "update user set name ='" + name
+ "' , pwd ='" + pwd
+ "' , sex ='" + sex
+ "' , home ='" + home
+ "' , info ='" + info + "' where id = " + id;
int i = DBconn.addUpdDel(sql);
if (i > 0) {
flag = true;
}
DBconn.closeConn();
return flag;
}
}
2. 连接数据库 (反射)
- 1. Class.forName("com.mysql.jdbc.Driver"); 加载驱动
- 2. Connection conn = DriverManager.getConnection(url,username,password); 建立连接
- 3. PreparedStatement ps = conn.prepareStatement(sql); 放入·sql 执行并返回结果
- 4. int rs = ps.executeUpdate(); //执行增删改之后返回处理结果信息 成功或失败码
- 5. ResultSet rs = ps.executeQuery(sql); 执行查询之后返回处理结果(ResultSet 类型)
package demo.util;
import java.sql.*;
public class DBconn {
static String url = "jdbc:mysql://localhost:3306/test?useunicuee=true& characterEncoding=utf8"; // 数据库连接url
static String username = "root"; // 数据库用户名
static String password = "123456"; // 用户密码
static Connection conn = null; // 初始化一个数据连接 conn
static ResultSet rs = null; // 初始化一个结果集 rs
static PreparedStatement ps =null; // 初始化一个PreparedStatement对象 ps
public static void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
System.out.println("init [SQL驱动程序初始化失败!]");
e.printStackTrace();
}
}
public static int addUpdDel(String sql){
int i = 0;
try {
PreparedStatement ps = conn.prepareStatement(sql);
i = ps.executeUpdate();
} catch (SQLException e) {
System.out.println("sql数据库增删改异常");
e.printStackTrace();
}
return i;
}
public static ResultSet selectSql(String sql){
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(sql);
} catch (SQLException e) {
System.out.println("sql数据库查询异常");
e.printStackTrace();
}
return rs;
}
public static void closeConn(){
try {
conn.close();
} catch (SQLException e) {
System.out.println("sql数据库关闭异常");
e.printStackTrace();
}
}
}
3.servlet事件处理程序 (部分!)
package demo.servlet;
import demo.dao.UserDao;
import demo.dao.UserDaoImpl;
import demo.entity.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class FindUserListServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDao ud = new UserDaoImpl();
List<User> userAll = ud.getUserAll();
request.setAttribute("userAll", userAll);
request.getRequestDispatcher("/userlist.jsp").forward(request, response);
}
}
package demo.servlet;
import demo.dao.UserDao;
import demo.dao.UserDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class UpdateServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
int userId = Integer.parseInt(id);
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
String home = request.getParameter("home");
String info = request.getParameter("info");
System.out.println("------------------------------------"+userId);
UserDao ud = new UserDaoImpl();
if(ud.update(userId, name, pwd, sex, home, info)){
request.setAttribute("xiaoxi", "更新成功");
request.getRequestDispatcher("/FindUserList").forward(request, response);
}else{
response.sendRedirect("index.jsp");
}
}
}
4.jsp页面 (部分)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>所有用户页面</title>
</head>
<body>
<h1>${xiaoxi}</h1>
<table width="600" border="1" cellpadding="0" >
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>密码</th>
<th>家乡</th>
<th>备注</th>
<th>操作</th>
</tr>
<c:forEach var="U" items="${userAll}" >
<form action="UpdateUser" method="post">
<tr>
<td><input type="text" value="${U.id}" name="id" ></td>
<td><input type="text" value="${U.name}" name="name"></td>
<td><input type="text" value="${U.sex}" name="sex"></td>
<td><input type="text" value="${U.pwd}" name="pwd"></td>
<td><input type="text" value="${U.home}" name="home"></td>
<td><input type="text" value="${U.info}" name="info"></td>
<td><a href="DeleteUser?id=${U.id}">删除</a> <input type="submit" value="更新"/></td>
</tr>
</form>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册</title>
</head>
<body>
<form action="Register"method="post" style="padding-top:-700px;">
输入用户名:<input name="name" type="text"><br><br>
输入密码:<input name="pwd" type="password"><br><br>
选择性别:<input type="radio"name="sex"value="男"checked>男
<input type="radio"name="sex"value="女">女<br><br>
选择家乡:
<select name="home">
<option value="上海">上海</option>
<option value="北京" selected>北京</option>
<option value="纽约">纽约</option>
</select><br>
填写个人信息:<br>
<textarea name="info" row="5"cols="30"></textarea><br>
<input type="reset"value="重置"><input type="submit"value="注册">
</form>
</body>
</html>
5. web.xml (主配置包含路由 首页 过滤器等 )
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name></display-name>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>demo.filter.EncodingFilter</filter-class><!-- 全路径 从根包开始一直到类名 -->
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern><!-- /* 即为过滤所有 -->
</filter-mapping>
<servlet><!--servlet类路径配置-->
<servlet-name>LoginServlet</servlet-name>
<servlet-class>demo.servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>demo.servlet.RegisterServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>FindUserListServlet</servlet-name>
<servlet-class>demo.servlet.FindUserListServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DeleteUserServlet</servlet-name>
<servlet-class>demo.servlet.DeleteServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>UpdateUserServlet</servlet-name>
<servlet-class>demo.servlet.UpdateServlet</servlet-class>
</servlet>
<servlet-mapping><!--servlet类映射配置-->
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/Register</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FindUserListServlet</servlet-name>
<url-pattern>/FindUserList</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DeleteUserServlet</servlet-name>
<url-pattern>/DeleteUser</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UpdateUserServlet</servlet-name>
<url-pattern>/UpdateUser</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
6 .总结
jsp 负责内容的呈现
servlet 负责前端请求事件的逻辑处理
jdbc 连接数据库 并根据servlet传递参数进行不同的数据库操作
wen.xml 配置请求路由 加载完成后的首页 请求响应的过滤器等
filter 负责过滤请求和响应的参数
IDEA 配置 Tomcat 以及合适JDK,最后运行项目