环境搭建与第一个Web项目

  1. 开发环境配置
<!-- 创建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部署描述符。

  1. 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配置访问路径,学习请求响应生命周期和线程安全问题。

  1. 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进阶篇 - 分页功能与验证码实现

  1. 数据库分页实现
// 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实现分页。

  1. 验证码生成与校验
// 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存储校验值。

posted @   f-52Hertz  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示