Servlet入门(三)Servlet初体验

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/83926765

前言

      通过前面两个章节的铺垫,本章正式迈入Servlet的学习

方法

1.概念

我们知道,有了http协议,规定了web交互的基本规范。有了服务器,用户的请求能够实时的得到响应。那么现在有个问题,就是用户发送一个请求给服务器,我服务器怎么才能知道该调用后台的哪些代码呢?Servlet应运而生了!

实际上它就是帮助处理用户请求到服务器,服务器调用相应的方法。

2.第一个Servlet程序

在讲解这个之前呢,推荐大家下载一款Java集成开发工具IntelliJ IDEA,有同学疑问了?我们之前不是有eclipse吗?为什么要用新的开发工具啊?原因是eclipse简单,功能不齐全!!!还有人说了,那用MyEclipse啊。这我也能理解,博主之前一直再用MyEclipse,公司里用eclipse、MyEclipse、IntellJ IDEA的比率大概在2:4:4,也就是说MyEclipse和IntellJ IDEA你选一个就行了!因为我之前一直在用MyEclipse,所以这次尝试一下IntelliJ IDEA。

我们拿之前的SMS项目的代码作为讲解! JAVA串烧(二)SMS编写之后台

1)打开IDE,在web文件夹下新增两个jsp文件login.jsp和success.jsp,前者是用户登录的表单,后者是登录成功的跳转页面。目前你可以不需要理会JSP文件的含义,只是把它当作一个普通的html文件来看待就行了!

目前的工程结构如下所示:

login.jsp源码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>用户登录</title>
  </head>
  <body>
  <form action="/login.do" method="post">
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    <input type="submit" value="登录">
  </form>
  </body>
</html>

success.jsp源码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>用户登录</title>
  </head>
  <body>
    <h1>用户登录成功</h1>
  </body>
</html>

注意:这是一个相当简单的登录表单,没有加入任何的CSS以及JS的修饰,不影响功能!

前提条件:将web项目部署到tomcat服务器中(每种工具的具体部署方法不同,读者可自行百度)

我这里将SMS工程部署到了之前下载好的tomcat中。以IntellJ为例:

这里用户点击登录的话就触发了一次请求,请求的url为 login.do

那么服务器如何知道这个请求应该调用什么代码呢,下面让我们来写Servlet告诉他吧!

2)编写Servlet文件(它也是一个Java文件,继承了HttpServlet)\com\jwang\student\servlet\UserServlet.java

package com.jwang.student.servlet;

import com.jwang.student.bo.User;
import com.jwang.student.service.UserService;
import com.jwang.student.service.impl.UserServiceImpl;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        try {
            UserService userService = new UserServiceImpl();
            User user = new User("01",username,password);
            if (userService.login(user)) {
                request.getSession().setAttribute("username", username);
                request.getRequestDispatcher("/success.jsp").forward(request, response);
            } else {
                request.setAttribute("errorMsg", "用户名或密码错误,请重新输入!");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response){
        this.doGet(request, response);
    }
}

以上代码的含义就是接收用户发出的请求,做登录验证!大家可以看到我调用了userService的login()方法,大家应该还没忘吧!

到这里我们的login.do请求应该是要访问这段代码的。

3)配置请求路径login.do指向UserServlet

\web\WEB-INF\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-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>com.jwang.student.servlet.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>
</web-app>

好了,经过了以上的准备工作,你的第一个Servlet就算是配置好了!

启动程序,进入登录表单输入用户名与密码,点击登录

  • 成功:系统跳转到success.jsp,显示登录成功
  • 失败:系统返回至login.jsp,用户需要重新输入用户名和密码进行登录

登录的用户名与密码在数据库中Users表:博主的是admin和admin

附录:

1.开发中启动web应用的时候一定要是debug模式,方便调试

IntellJ IDEA中请点击这个小虫子!

在代码中左侧点击鼠标打上断点即可实现代码调试!

常用的快捷键是: F8下一步 、F9下一个断点

不使用快捷键的话,debug窗口如下:

2.乱码问题 

大家有没有发现,表单中写入了中文后,传递到后台就发生了乱码!!!这种很烦!

因为我的工程是utf-8编码的,所以添加如下代码即可解决乱码问题!

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/83926765