imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154
list.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!-- basePath = http://localhost:8080/MicroMessage/ --> <!-- Eclipse注释快捷键 Ctrl + Shift + / --> <!-- request.getScheme() 返回当前链接使用的协议;一般应用返回http;SSL返回https --> <!-- request.getContextPath() 返回站点的根目录 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE" /> <title>内容列表页面</title> <link href="<%= basePath %>resources/css/all.css" rel="stylesheet" type="text/css" /> </head> <body style="background: #e1e9eb;"> <form action="<%= basePath %>List.action" id="mainForm" method="post"> <div class="right"> <div class="current">当前位置:<a href="javascript:void(0)" style="color:#6E6E6E;">内容管理</a> > 内容列表</div> <div class="rightCont"> <p class="g_title fix">内容列表 <a class="btn03" href="#">新 增</a> <a class="btn03" href="#">删 除</a></p> <table class="tab1"> <tbody> <tr> <td width="90" align="right">指令名称:</td> <td> <input name="command" type="text" class="allInput" value=""/> </td> <td width="90" align="right">描述:</td> <td> <input name="description" type="text" class="allInput" value=""/> </td> <td width="85" align="right"><input type="submit" class="tabSub" value="查 询" /></td> </tr> </tbody> </table> <div class="zixun fix"> <table class="tab2" width="100%"> <tbody> <tr> <th><input type="checkbox" id="all" onclick="#"/></th> <th>序号</th> <th>指令名称</th> <th>描述</th> <th>操作</th> </tr> <c:forEach varStatus="status" var="message" items="${messageList}"> <tr <c:if test="${status.index % 2 == 1}">style="background-color:#ECF6EE;"</c:if>> <td><input type="checkbox" /></td> <td>${status.index + 1 }</td> <td>${message.command}</td> <td>${message.description}</td> <td> <a href="#">修改</a> <a href="#">删除</a> </td> </tr> </c:forEach> </tbody> </table> <div class='page fix'> 共 <b>4</b> 条 <a href='###' class='first'>首页</a> <a href='###' class='pre'>上一页</a> 当前第<span>1/1</span>页 <a href='###' class='next'>下一页</a> <a href='###' class='last'>末页</a> 跳至 <input type='text' value='1' class='allInput w28' /> 页 <a href='###' class='go'>GO</a> </div> </div> </div> </div> </form> </body> </html>
listServlet.java
package com.imooc.servlet; import java.io.IOException; 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 javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc.bean.Message; // ctrl+shift+x 转为大写 ctrl+shift+y // 断点调试 // 表示当前实现继续运行直到下一个断点,快捷键为F8。 // 表示运行下一行代码,快捷键为F6 // 表示退出当前方法,返回到调用层,快捷键为F7 /** * * 列表页面初始化控制 * */ @SuppressWarnings("serial") public class ListServlet extends HttpServlet { private static final String JDBC_DRIVER = "org.gjt.mm.mysql.Driver"; private static final String DB_URL = "jdbc:mysql://localhost:3306/miro_message"; private static final String USER = "root"; private static final String PASS = "pass"; private static Connection conn = null; static { try { Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL, USER, PASS); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 从前台拿数据 req.setCharacterEncoding("UTF-8"); String command = req.getParameter("command"); String description = req.getParameter("description"); // sql拼接 StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append("select ID, COMMAND, DESCRIPTION, CONTENT from MESSAGE where 1=1"); List<String> paramList = new ArrayList<>(); if (command != null && !"".equals(command.trim())) { // 第一次进入页面的时候command是为空的,加上trim()是为了除掉空格 sqlBuilder.append(" and COMMAND=?"); paramList.add(command); } if (description != null && !"".equals(description.trim())) { sqlBuilder.append(" and DESCRIPTION like '%' ? '%'"); // like是近似查询,mysql字符串拼接不用+,用空格就Ok // 例如'%三%' 会把唐三藏啊,张三,等有三的记录全查出来 // %可匹配任意类型和长度的字符,0到n paramList.add(description); } String sql = sqlBuilder.toString(); PreparedStatement prep = null; ResultSet result = null; List<Message> messageList = new ArrayList<>(); try { prep = conn.prepareStatement(sql); for (int i = 0; i != paramList.size(); ++i) { prep.setString(i+1, paramList.get(i)); } result = prep.executeQuery(); while (result.next()) { Message message = new Message(); messageList.add(message); message.setId(result.getString("ID")); message.setCommand(result.getString("COMMAND")); message.setDescription(result.getString("DESCRIPTION")); message.setContent(result.getString("CONTENT")); } req.setAttribute("messageList", messageList); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } req.setCharacterEncoding("UTF-8"); req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub this.doGet(req, resp); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>MicroMessage</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>ListServlet</servlet-name> <servlet-class>com.imooc.servlet.ListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ListServlet</servlet-name> <url-pattern>/List.action</url-pattern> </servlet-mapping> </web-app>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>MicroMessage</groupId> <artifactId>MicroMessage</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-spec</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>