码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-06-04 16:07:41      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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 的自动用标签

 

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

标签:

原文地址:http://www.cnblogs.com/geb515/p/5558938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!