- 开发环境配置
<!-- 创建Maven Web项目依赖 -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>
使用IntelliJ IDEA创建Maven Web项目,配置Tomcat 9+服务器,注意设置/WEB-INF/web.xml
部署描述符。
- Servlet基础开发
// HelloServlet.java
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<h1>Hello JavaWeb!</h1>");}
}
通过注解@WebServlet
配置访问路径,学习请求响应生命周期和线程安全问题。
- JSP与EL表达式
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body><p>当前时间: ${new java.util.Date()}</p><% for(int i=0; i<5; i++){ %><p>循环条目 <%=i+1%></p><% } %>
</body>
</html>
掌握JSP脚本元素、指令标签和EL表达式的基本用法。
博客二:JavaWeb进阶篇 - 分页功能与验证码实现
- 数据库分页实现
// PageBean.java
public class PageBean<T> {private int currentPage; // 当前页private int pageSize; // 每页条数private int totalRecords; // 总记录数private List<T> dataList; // 数据集合// 计算总页数public int getTotalPages() {return (totalRecords + pageSize - 1) / pageSize;}
}// DAO层分页查询
String sql = "SELECT * FROM articles LIMIT ?,?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, (currentPage-1)*pageSize);
ps.setInt(2, pageSize);
通过计算(当前页-1)*每页数量
获取起始偏移量,配合MySQL的LIMIT实现分页。
- 验证码生成与校验
// CaptchaServlet.java
public class CaptchaServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {BufferedImage image = new BufferedImage(80, 30, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();String randomCode = String.valueOf(new Random().nextInt(8999)+1000);request.getSession().setAttribute("captcha", randomCode);g.drawString(randomCode, 20, 20);ImageIO.write(image, "JPEG", response.getOutputStream());}
}// 前端验证
<input type="text" name="captcha">
<img src="/captcha" onclick="this.src='/captcha?t='+Math.random()">
使用BufferedImage生成图形验证码,通过Session存储校验值。