<轻量级Java EE企业应用实战>1:JSP/Servlet及相关技术详解(二)

7 Servlet 介绍

7.1 Servlet 的开发

@WebServlet(name = "helloServlet", urlPatterns = {"/helloServlet"})
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String username = req.getParameter("username");
        PrintStream out = new PrintStream(resp.getOutputStream());
        out.println(username);
    }
}

  启动 tomcat 后使用链接 http://localhost/helloServlet?username=admin 即可。

7.2 Servlet 的配置

  从 Servlet 3.0 开始,配置 Servlet 有两种方式:@WebServlet 注解或 web.xml 配置。

7.3 Servlet 的生命周期

7.4 load-on-startup Servlet

  创建 Servlet 有两个时机:应用启动时或用户请求时。load-on-startup 参数配置 Servlet 实例化优先级,值越小,越优先。

7.5 访问 Servlet 的配置参数

  为 Servlet 配置参数也有两种方式:@WebServlet 的 initParams 属性或 web.xml 中 <servlet> 元素的 <init-param> 子元素。

@WebServlet(name = "helloServlet", urlPatterns = {"/helloServlet"},
        initParams = {
                @WebInitParam(name = "password", value = "admin123")
        }
)
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        PrintStream out = new PrintStream(resp.getOutputStream());
        ServletConfig config = getServletConfig();
        out.println(config.getInitParameter("password"));
    }
}

7.6 使用 Servlet 作为控制器

  在标准的 MVC 模式中,JSP 仅作为表现层技术负责收集用户请求参数并展现数据,Servlet 仅作为控制器使用,所有请求都发给 Servlet,Servlet 调用 Model 处理请求,并调用 JSP 呈现处理结果。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录</title>
</head>
<body>
<span>
    <%
        String message = (String) request.getAttribute("message");
        if (message != null) {
            out.println(message);
        }
    %>
</span>
请输入用户名和密码:<br>
<form id="login" method="post" action="/loginServlet">
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登陆">
</form>
</body>
</html>

login.jsp

@WebServlet(name = "loginServlet", urlPatterns = {"/loginServlet"})
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String message = "";

        DBUtil dbUtil = new DBUtil();
        try {
            ResultSet resultSet = dbUtil.query("select password from t_user where username = ?", username);
            if (resultSet.next()) {
                if (resultSet.getString("password").equals(password)) {
                    // 保存username至会话
                    HttpSession session = req.getSession();
                    session.setAttribute("username", username);
                    // 转发到欢迎页面
                    req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
                } else {
                    message = "密码错误";
                }
            } else {
                message = "用户名不存在";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (!message.equals("")) {
            req.setAttribute("message", message);
            req.getRequestDispatcher("/login.jsp").forward(req, resp);
        }
    }
}

LoginServlet.java

8 JSP 2 的自动用标签

时间: 2024-11-05 18:57:06

<轻量级Java EE企业应用实战>1:JSP/Servlet及相关技术详解(二)的相关文章

JSP/Servlet及相关技术详解

JSP和Servlet是Java EE规范的两个基本成员,他们是Java Web开发的重点知识,也是Java EE开发的基础知识. 1.1page指令 page指令通常位于JSP页面的顶端,一个JSP页面可以使用多条page指令.page指令的语法格式如下: <%@page [language="Java"] [extends="package.class"] [import="package.class|package.*,..."] [

【Hibernate学习笔记】第二章节:JSP/Servlet及相关技术详解

JSP(Java Servr Page)和Servlet是Java EE规范的两个基本成员,他们是Java Web开发的重点知识,也是Java EE开发的基础知识.JSP和Servlet的本质是一样的,因此JSP最终必须编译成Servlet才能运行,或者说JSP只是生成Servlet的"草稿"文件.JSP的特点是在HTML页面中嵌入了Java代码片段,从而可以动态的提供页面内容. 1.Web应用和web.xml文件 JSP.Servlet.Listener和Filter等都必须运行在W

第二章.JSP/Servlet及相关技术详解

JSP的4种基本语法: 1.JSP注释: <%-- JSP注释部分 --%> 2.JSP声明: <%! //声明一个整型变量 public int count; //声明一个方法 public String info(){ return "hello"; } %> 3.输出JSP表达式: <%=count++%> 这句话代替了Java中的out.print(count++);但是注意输出表达式后面不能有分号. 4.JSP脚本: 1 <%@ pa

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Java EE经典著作) 李刚 编著   ISBN 978-7-121-24253-3 2014年10月出版 定价:108.00元 824页 16开 编辑推荐 国内知名IT图书作家李刚老师基于曾荣获中国书刊发行业协会“年度全行业优秀畅销品种”大奖的<轻量级Java EE企业应用实战(第3版)>全新升级:

&lt;轻量级Java EE企业应用实战&gt;2:Struts 2 的基本用法

1 MVC 思想概述 2 Struts 2 的下载和安装 添加 Struts 2 的 jar 到项目 lib 目录,修改 web.xml 文件: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

SSH:Struts + Spring + Hibernate 轻量级Java EE企业框架

Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本.这个版本以前称为 J2EE.能够帮助我们开发和部署可移植.健壮.可伸缩且安全的服务器端Java应用程序.Java EE 是在 Java SE 的基础上构建的,它提供Web 服务.组件模型.管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0应用程序.

【阅读笔记】《Java EE企业应用实战》(第四版)第七章——Spring的基本用法

Spring的定义和相关知识点 Spring包括 基于依赖注入的核心机制(再也不用new一个对象啦) 基于AOP的声明式事物管理 与多种持久层技术的整合 Web MVC框架 Spring的优点 低侵入式设计,代码污染低 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺(合着以前Java说的Write Once,Run Anywhere到了这里才能实现呀) Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦.

[书目20140902]实战Windows Azure——微软云计算平台技术详解 --徐子岩

目录第1章  云计算技术简介    1.1  云计算所要解决的问题    1.2  云计算平台的分类    1.3  微软云计算平台Windows Azure        1.3.1  高可用性        1.3.2  易于部署和伸缩        1.3.3  全球化        1.3.4  开发语言和开发模型第2章  Windows Azure云计算平台    2.1  Windows Azure平台的组成部分和主要功能        2.1.1   Windows Azure  

Servlet+JavaBean+JSP真假分页技术详解

说明:分页技术分为真分页和假分页,具体采用哪种技术需要根据需求自我抉择.其实两者之间实现区别并不是太大.在分页之前我们需要搞明白对谁进行分页,一般情况是将数据封装到一个list集合中,明白这这一点问题基本上就已经解决了.(编写匆促如有错误请联系我) 下面首先介绍真分页. 方法一: 为了大家学习起来方便, 我将在项目中用到的内容都放在这个文档中,所以可能会比较萝莉啰嗦. 1.构建数表,字段如下 goods goodid int goodname varchar(45) price flaot 2,