location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
????????解決服務(wù)端接收數(shù)據(jù)亂碼問(wèn)題。服務(wù)器默認(rèn)采用 ISO8859-1 編碼響應(yīng)內(nèi)容。
// 1req.setCharacterEncoding("utf-8");// 2 byte[] bytes = req.getParameter("username").getBytes("iso-8859-1"); System.out.println("username:" + new String(bytes,0,bytes.length,"utf-8"));????????解決服務(wù)端發(fā)送到客戶(hù)端數(shù)據(jù)亂碼問(wèn)題。
// 1 text/html,響應(yīng)數(shù)據(jù)類(lèi)型; resp.setContentType("text/html;charset=utf8;"); // 2 resp.setCharacterEncoding("utf-8"); resp.setHeader("Content-type","text/html;charset=utf8");????????單元測(cè)試。
????????src 同級(jí)目錄創(chuàng)建 test 文件夾,右鍵 -> Mark Directory as ->Sources Root,文件名采用測(cè)試的模塊名 + Test。
????????轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)的作用在服務(wù)器端,將請(qǐng)求發(fā)送給服務(wù)器上的其他資源,以共同完成一次請(qǐng)求的處理。使用forward跳轉(zhuǎn)時(shí),是在服務(wù)器內(nèi)部跳轉(zhuǎn),地址欄不發(fā)生變化,屬于同一次請(qǐng)求。
request.getRequestDispatcher(“/目標(biāo)URL-pattern”).forward(request, response);// 存數(shù)據(jù)request.setAttribute(key,value);// 取數(shù)據(jù)request.getAttribute(key);????????重定向。重定向作用在客戶(hù)端,客戶(hù)端將請(qǐng)求發(fā)送給服務(wù)器后,服務(wù)器響應(yīng)給客戶(hù)端一個(gè)新的請(qǐng)求地址,客戶(hù)端重新發(fā)送新請(qǐng)求。
????????重定向可以指向任何的資源,包括當(dāng)前應(yīng)用程序中的其他資源、同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源、其他站點(diǎn)的資源。
response.sendRedirect(“目標(biāo)URI”);// 帶數(shù)據(jù)response.sendRedirect(“目標(biāo)URI?username=tom&ps=123”);// 接收數(shù)據(jù)request.getParameter(“username”);????????servlet 用戶(hù)管理系統(tǒng)。
????????目錄結(jié)構(gòu)。
public class AddUserServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); String username = req.getParameter("username"); String password = req.getParameter("password"); String age = req.getParameter("age"); String sex = req.getParameter("sex"); User user = new User(); user.setUsername(username); user.setPassword(password); user.setAge(Integer.valueOf(age)); user.setSex(Integer.valueOf(sex)); int i = userService.AddUser(user); if (i == 0) { resp.getWriter().write("添加失敗"); } else { resp.getWriter().write("添加成功"); resp.getWriter().write("查詢(xún)所有用戶(hù)"); } }}public class DeleteUserServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); String username = req.getParameter("username"); int i = userService.DeleteUser(username); if (i == 0) { resp.getWriter().write("刪除失敗"); } else { resp.getWriter().write("刪除成功"); resp.getWriter().write("查詢(xún)所有用戶(hù)"); } }}public class GetUserListServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); System.out.println("查詢(xún)所有的用戶(hù):" + req); List userList = userService.getUserList(); // 轉(zhuǎn)發(fā)數(shù)據(jù) req.setAttribute("userList",userList); // 轉(zhuǎn)發(fā)對(duì)象 req.getRequestDispatcher("ViewUserServlet").forward(req,resp); // 重定向 最好不帶參數(shù) resp.sendRedirect("ViewUserServlet?username=zs&password=123"); resp.sendRedirect("http://www.baidu.com"); }}public class LoginUserServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); String username = req.getParameter("username"); String password = req.getParameter("password"); User user = userService.login(username, password); if (user == null) { resp.getWriter().write("用戶(hù)名或密碼錯(cuò)誤.."); } else { resp.getWriter().write("歡迎【" + req.getRemoteAddr() + username + "】登陸"); resp.getWriter().write("查詢(xún)所有用戶(hù)"); } }}public class SelectUserServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); System.out.println("查詢(xún)所有的用戶(hù):" + req); String username = req.getParameter("username"); User user = userService.SelectUser(username); StringBuffer buffer = new StringBuffer(); buffer.append(""); buffer.append(""); buffer.append(""); buffer.append(""); buffer.append("ID"); buffer.append("用戶(hù)名"); buffer.append("密碼"); buffer.append("年齡"); buffer.append("性別"); buffer.append(""); if (user != null) { buffer.append(""); buffer.append("" + user.getId() + ""); buffer.append("" + user.getUsername() + ""); buffer.append("" + user.getPassword() + ""); buffer.append("" + user.getAge() + ""); buffer.append("" + user.getSex() + ""); buffer.append(""); } buffer.append(""); buffer.append(""); buffer.append(""); buffer.append("查詢(xún)所有用戶(hù)"); resp.getWriter().write(buffer.toString()); }}public class UpdateUserServlet extends HttpServlet { private IUserService userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf8"); String username = req.getParameter("username"); String password = req.getParameter("password"); String age = req.getParameter("age"); String sex = req.getParameter("sex"); User user = new User(); user.setUsername(username); user.setPassword(password); user.setAge(Integer.valueOf(age)); user.setSex(Integer.valueOf(sex)); int i = userService.UpdateUser(user); if (i == 0) { resp.getWriter().write("更新失敗"); } else { resp.getWriter().write("更新成功"); resp.getWriter().write("查詢(xún)所有用戶(hù)"); } }}public class ViewUserServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("展示所有的用戶(hù):" + req); resp.setContentType("text/html;charset=utf8"); System.out.println("username:" + req.getParameter("username")); List userList = (List) req.getAttribute("userList"); StringBuffer buffer = new StringBuffer(); buffer.append(""); buffer.append(""); buffer.append(""); buffer.append(""); buffer.append("ID"); buffer.append("用戶(hù)名"); buffer.append("密碼"); buffer.append("年齡"); buffer.append("性別"); buffer.append(""); if (userList != null) { for (User user: userList) { buffer.append(""); buffer.append("" + user.getId() + ""); buffer.append("" + user.getUsername() + ""); buffer.append("" + user.getPassword() + ""); buffer.append("" + user.getAge() + ""); buffer.append("" + user.getSex() + ""); buffer.append(""); } } buffer.append(""); buffer.append(""); buffer.append(""); resp.getWriter().write(buffer.toString()); }}public interface IUserDao { public User login(String username); public ListgetUserList(); public int AddUser(User user); public int DeleteUser(String name); public int UpdateUser(User user); public User SelectUser(String name);}public class UserDaoImpl implements IUserDao { @Override public User login(String username) { String sql = "select * from t_user where username = ?"; List users = DaoUtils.commonQuery(sql, User.class, username); if (users.isEmpty()) { return null; } return users.get(0); } @Override public ListgetUserList() { return DaoUtils.commonQuery("select * from t_user", User.class); } @Override public int AddUser(User user) { List userList = getUserList(); // 存在同名 for (User subUser: userList) { if (subUser.getUsername().equals(user.getUsername())) { return 0; } } String sql = "insert into t_user(username, password, age, sex) value(?, ?, ?, ?)"; int i = DaoUtils.commonUpdate(sql, user.getUsername(),user.getPassword(), user.getAge(),user.getSex()); return i; } @Override public int DeleteUser(String username) { String sql = "delete from t_user where username = ?"; int i = DaoUtils.commonUpdate(sql, username); return i; } @Override public int UpdateUser(User user) { String sql = "update t_user set password=?,age=?,sex=? where username = ?"; int i = DaoUtils.commonUpdate(sql,user.getPassword(),user.getAge(),user.getSex(),user.getUsername()); return i; } public User SelectUser(String name) { List users = DaoUtils.commonQuery("select * from t_user where username = ?", User.class, name); if (users.isEmpty()) { return null; } return users.get(0); }}@Datapublic class User { private Integer id; private String username; private String password; private Integer age; private Integer sex;}public interface IUserService { public User login(String username, String password); public ListgetUserList(); public int AddUser(User user); public int DeleteUser(String name); public int UpdateUser(User user); public User SelectUser(String name);}public class UserServiceImpl implements IUserService { private IUserDao userDao = new UserDaoImpl(); @Override public User login(String username, String password) { User user = userDao.login(username); if (user == null) { System.out.println("用戶(hù)名或密碼錯(cuò)誤"); return null; } if (!user.getPassword().equals(password)) { System.out.println("用戶(hù)名或密碼錯(cuò)誤"); return null; } return user; } @Override public ListgetUserList() { return userDao.getUserList(); } public int AddUser(User user) { return userDao.AddUser(user); } public int DeleteUser(String name) { return userDao.DeleteUser(name); } public int UpdateUser(User user) { return userDao.UpdateUser(user); } public User SelectUser(String name) { return userDao.SelectUser(name); }}public class DaoUtils { // 更改 public static int commonUpdate(String sql, Object ...args) { Connection connection = DBUtils.getConnection(); PreparedStatement prst = null; try { prst = connection.prepareStatement(sql); if (args != null && args.length > 0) { for (int i = 0; i < args.length; i ++) { prst.setObject(i + 1,args[i]); } } return prst.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.close(prst); } return 0; } // 查詢(xún) public static ListcommonQuery(String sql, Class cls, Object ...args) { Connection connection = DBUtils.getConnection(); PreparedStatement prst = null; ResultSet resultSet = null; List list = new ArrayList<>(); try { prst = connection.prepareStatement(sql); if (args != null && args.length > 0) { for (int i = 0; i < args.length; i ++) { prst.setObject(i + 1,args[i]); } } resultSet = prst.executeQuery(); while (resultSet.next()) { T t = cls.newInstance(); Field[] fields = cls.getDeclaredFields(); for (Field field: fields) { // 設(shè)置動(dòng)態(tài)給屬性賦值權(quán)限 field.setAccessible(true); Object value = null; try { value = resultSet.getObject(field.getName()); } catch (SQLException e) { // 出現(xiàn)實(shí)體字段和數(shù)據(jù)庫(kù)字段不一致 String columnName = DBUtils.getProperties().getProperty(field.getName()); value = resultSet.getObject(columnName); } field.set(t, value); } list.add(t); } } catch (SQLException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } finally { DBUtils.close(resultSet, prst); } return list; }}public class DBUtils { private static DataSource dataSource = null; private static Properties properties = new Properties(); private static ThreadLocal threadLocal = new ThreadLocal<>(); static { try { properties.load(DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties")); dataSource = DruidDataSourceFactory.createDataSource(properties); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public static Properties getProperties() { return properties; } public static Connection getConnection() { Connection connection = threadLocal.get(); if (connection == null) { try { connection = dataSource.getConnection(); threadLocal.set(connection); } catch (SQLException e) { e.printStackTrace(); } } return connection; } public static void close(AutoCloseable ...args) { for (AutoCloseable obj: args) { if (obj != null) { try { obj.close(); } catch (Exception e) { e.printStackTrace(); } } }????}}#?jdbc.properties#連接設(shè)置driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mydb1?characterEncoding=utf-8username=rootpassword=Liu01234#初始化可連接數(shù)量,實(shí)際項(xiàng)目時(shí)要設(shè)置更大值initialSize=100#最大連接數(shù)量maxActive=500#最小空閑連接,當(dāng)空閑連接小于此值時(shí)會(huì)開(kāi)辟新當(dāng)空間,直到最大連接數(shù)量minIdle=50#超時(shí)等待時(shí)間以毫秒為單位 1000等于1秒maxWait=5000<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>LoginUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.LoginUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>LoginUserServletservlet-name> <url-pattern>/LoginUserServleturl-pattern> servlet-mapping> <servlet> <servlet-name>GetUserListServletservlet-name> <servlet-class>com.baidu.day.test1.controller.GetUserListServletservlet-class> servlet> <servlet-mapping> <servlet-name>GetUserListServletservlet-name> <url-pattern>/GetUserListServleturl-pattern> servlet-mapping> <servlet> <servlet-name>ViewUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.ViewUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>ViewUserServletservlet-name> <url-pattern>/ViewUserServleturl-pattern> servlet-mapping> <servlet> <servlet-name>AddUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.AddUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>AddUserServletservlet-name> <url-pattern>/AddUserServleturl-pattern> servlet-mapping> <servlet> <servlet-name>DeleteUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.DeleteUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>DeleteUserServletservlet-name> <url-pattern>/DeleteUserServleturl-pattern> servlet-mapping> <servlet> <servlet-name>UpdateUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.UpdateUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>UpdateUserServletservlet-name> <url-pattern>/UpdateUserServleturl-pattern> servlet-mapping> <servlet> <servlet-name>SelectUserServletservlet-name> <servlet-class>com.baidu.day.test1.controller.SelectUserServletservlet-class> servlet> <servlet-mapping> <servlet-name>SelectUserServletservlet-name> <url-pattern>/SelectUserServleturl-pattern> servlet-mapping>web-app><%-- index.jsp --%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>$Title$title> head> <body> <form method="post" action="LoginUserServlet"> username:<input type="text" name="username" value="zs"><br><br> password:<input type="text" name="password" value="123"><br><br> <input type="submit" value="登陸"> form> <br><br> <form method="post" action="AddUserServlet"> username:<input type="text" name="username" value="zs"><br><br> password:<input type="text" name="password" value="123"><br><br> age:<input type="text" name="age" value="12"><br><br> sex:<input type="text" name="sex" value="1"><br><br> <input type="submit" value="添加用戶(hù)"> form> <br><br> <form method="post" action="DeleteUserServlet"> username:<input type="text" name="username" value="zs"><br><br> <input type="submit" value="刪除用戶(hù)"> form> <br><br> <form method="post" action="SelectUserServlet"> username:<input type="text" name="username" value="zs"><br><br> <input type="submit" value="查詢(xún)用戶(hù)"> form> <br><br> <form method="post" action="UpdateUserServlet"> username:<input type="text" name="username" value="zs"><br><br> password:<input type="text" name="password" value="123"><br><br> age:<input type="text" name="age" value="12"><br><br> sex:<input type="text" name="sex" value="1"><br><br> <input type="submit" value="修改用戶(hù)"> form> <br><br> body>html>總結(jié)
以上是生活随笔為你收集整理的location.href属于重定向还是转发_servlet2 单元测试、转发、重定向的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 又一条时速350公里高铁铺轨:形成世界级
- 下一篇: 高考文理科生在线battle 网友:一生