笔记说明:
前后端未分离数据交互。本次完成了web传输数据到后台servlet处理再操作数据库SQL再返回数据给前端的操作
点击跳转:
JDBC
步骤一:模型层TOP
public class User {
private String username;
private String password;
private String nickname;
private String sex;
private String hobby;
private String path;
……省略添加javaBean(get/set/toString)
}
步骤二:连接数据库(DBUtil)TOP
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
private static final String url = "jdbc:mysql://127.0.0.1:3306/user";
private static final String user = "root";
private static final String password = "root";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
return conn;
}
}
步骤三:DAO(数据库访问)TOP
public class UserDao {
public void add(User user) throws Exception {
Connection conn = DBUtil.getConnection();
String sql = "insert into users(username,password,nickname,sex,hobby,path)"
+ "value(?,?,?,?,?,?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1, user.getUsername());
preparedStatement.setString(2, user.getPassword());
preparedStatement.setString(3, user.getNickname());
preparedStatement.setString(4, user.getSex());
preparedStatement.setString(5, user.getHobby());
preparedStatement.setString(6, user.getPath());
preparedStatement.execute();
}
public List<User> query(String name) throws Exception {
Connection conn = DBUtil.getConnection();
String sql = " select * from users " + " where username=? ";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ResultSet resultSet = ps.executeQuery();
List<User> list = new ArrayList<User>();
User u = null;
while (resultSet.next()) {
u = new User();
u.setUsername(resultSet.getString("username"));
u.setPassword(resultSet.getString("password"));
u.setNickname(resultSet.getString("nickname"));
u.setSex(resultSet.getString("sex"));
u.setHobby(resultSet.getString("hobby"));
u.setPath(resultSet.getString("path"));
list.add(u);
}
return list;
}
public List<User> query() throws Exception {
Connection conn = DBUtil.getConnection();
String sql = " select * from users ";
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
List<User> list = new ArrayList<User>();
User u = null;
while (resultSet.next()) {
u = new User();
u.setUsername(resultSet.getString("username"));
u.setPassword(resultSet.getString("password"));
u.setNickname(resultSet.getString("nickname"));
u.setSex(resultSet.getString("sex"));
u.setHobby(resultSet.getString("hobby"));
u.setPath(resultSet.getString("path"));
list.add(u);
}
return list;
}
……其他SQL操作省略
}
WEB 页面
regist:TOP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="com.exercise.servlet.*"%>
<%
String msg = "";
if(request.getAttribute("msg") != null){
msg = (String)request.getAttribute("msg");
}
%>
<!-- 要传输数据到servlet(action="Servlet Name"),用method="post" enctype="multipart/form-data" -->
<h3><font color="red"><%=msg%></font></h3>
<form action="<%= request.getContextPath()%>/RegistServlet" method="post" enctype="multipart/form-data">
<table>
……text
……radio
<tr>
<td class="ph">上传头像/图片</td>
<td><input type="file" id="photo" name="upload"></td>
</tr>
……chechbox
……submit
</table>
</form>
<body>
<div class="login">
<div class="header">
<h1>
<a href="./login.jsp">登录</a> <a href="./regist.jsp">注册</a>
</h1>
</div>
<%
String username = "";
if(session.getAttribute("username") != null){
username = (String) session.getAttribute("username");
}
String msg02 = "";
if(request.getAttribute("msg02") != null){
msg02 = (String) request.getAttribute("msg02");
}
%>
<h3><font color="red"><%=msg02%></font></h3>
<form action="<%=request.getContextPath()%>/LoginAccessCheck" method="post">
<table>
<tr>
<td class="td1">用户名</td>
<td><input type="text" class="input1" name="username" value="<%=username%>"></td>
</tr>
<tr>
<td class="td1">密码</td>
<td><input type="password" class="input1" name="password" value=""></td>
</tr>
<tr>
<td class="td1" colspan="2">
<input type="checkbox" name="remember" value="true" checked="checked"> 记住用户名</td>
</tr>
<tr>
<td colspan="2">
<div class="btn-red">
<input type="submit" value="登录" id="login-btn">
</div>
</td>
</tr>
</table>
</form>
</div>
</body>
Servlet:
InitServlet:TOP
public class InitServlet extends HttpServlet {
@Override
public void init() throws ServletException {
List<User> list = new ArrayList<User>();
this.getServletContext().setAttribute("list", list);
}
}
RegistServlet:TOP
DiskFileItemFactory 解析,菜鸟链接
public class RegistServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
List<FileItem> list = servletFileUpload.parseRequest(request);
List<String> hobbyList = new ArrayList<String>();
Map<String, String> map = new HashMap<String, String>();
String url = null;
for (FileItem fileItem : list) {
if(fileItem.isFormField()){
String name = fileItem.getFieldName();
String value = fileItem.getString("UTF-8");
if("hobby".equals(name)){
String hobbyValue = fileItem.getString("UTF-8");
hobbyList.add(hobbyValue);
hobbyValue = hobbyList.toString().substring(1, hobbyList.toString().length()-1);
map.put(name, hobbyValue);
}else{
map.put(name, value);
}
}else {
String fileName = fileItem.getName();
if(!fileName.equals("") && fileName.length() >= 4){
String uuidFileName = UploadUtils.getUUIDFileName(fileName);
InputStream is = fileItem.getInputStream();
String path = this.getServletContext().getRealPath("/upload");
url = path + "\\" + uuidFileName;
OutputStream os = new FileOutputStream(url);
int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b)) != -1){
os.write(b, 0, len);
}
is.close();
os.close();
}
}
}
System.out.println(map);
System.out.println("url:"+url);
User user = new User();
user.setUsername(map.get("username"));
user.setPassword(map.get("password"));
user.setNickname(map.get("nickname"));
user.setSex(map.get("sex"));
user.setHobby(map.get("hobby"));
user.setPath(url);
UserDao userDao = new UserDao();
UserCheck userCheck = new UserCheck();
if(userCheck.userNameCheck(map.get("username"))){
userDao.add(user);
}else{
request.setAttribute("msg", "用户名已经存在!");
request.getRequestDispatcher("/regist.jsp").forward(request, response);
return ;
}
request.getSession().setAttribute("username", user.getUsername());
response.sendRedirect(request.getContextPath() + "/login.jsp");
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
获取随机文件名:TOP
import java.util.UUID;
public class UploadUtils {
public static String getUUIDFileName(String fileName){
int idx = fileName.lastIndexOf(".");
String extention = fileName.substring(idx);
String uuidFileName = UUID.randomUUID().toString().replace("-", "") + extention;
return uuidFileName;
}
}
public class UserCheck {
public boolean userNameCheck(String username){
boolean flag = false;
UserDao ud = new UserDao();
List<User> userList = new ArrayList<User>();
try {
userList = ud.query(username);
if(userList.isEmpty()){
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public List<User> userAccessCheck(String username){
boolean flag = false;
UserDao ud = new UserDao();
List<User> userList = new ArrayList<User>();
try {
userList = ud.query(username);
} catch (Exception e) {
e.printStackTrace();
}
return userList;
}
}
用户登录servlet:TOP
public class LoginAccessCheck extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserCheck uc = new UserCheck();
List<User> list = uc.userAccessCheck(username);
for (User user : list) {
if (username.equals(user.getUsername())) {
if (password.equals(user.getPassword())) {
String remember = request.getParameter("remember");
if("true".equals(remember)){
Cookie cookie = new Cookie("username", user.getUsername());
cookie.setPath("/Web_jdbc_servlet");
cookie.setMaxAge(60*60);
response.addCookie(cookie);
}
request.getSession().setAttribute("user", user);
response.sendRedirect("/Web_jdbc_servlet/success.jsp");
return ;
}
}
}
request.setAttribute("msg02", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
XML配置文件(节选):TOP
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.exercise.servlet.InitServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>