04-tomcat和servlet

150 阅读4分钟

一、网站发布

1.1、为什么要用tomcat

网页开发好了,该如何发布呢?我们需要一款可以发布网站的服务器,tomcat就是一款非常优秀的服务器。

1.2、单独部署tomcat

在Windows系统上单独部署tomcat8

现场演示,使用步骤:
1、安装jdk,并且配置环境变量
2、将tomcat解压出来,并且修改配置文件(配置jdk路径)
3、将网页发布到tomcat服务器

1.3、在idea中使用tomcat

idea配置tomcat

Configure > Setting > Build,Execution,Deployment > Application Servers

图片.png

IDEA创建JavaWeb应用

首先创建一个空的Java项目

图片.png

图片.png

图片.png

在刚创建好的空的Java项目中添加一个模块,并添加web支持

图片.png

图片.png

图片.png

图片.png

在IDEA中发布web项目

图片.png

图片.png

图片.png

图片.png

图片.png

启动tomcat

图片.png

关闭tomcat

图片.png

二、切片1:登陆功能

2.1、导入:为什么要使用Servlet

Serlvet是以java技术为基础,运行于服务器端的应用程序组件。它处理请求信息,并将结果发送到客户端。Servlet的客户端可以提出请求并获得该请求的响应,客户端可以是任何Java程序、浏览器或设备。

Servlet的主要功能: 根据客户端请求动态返回整个HTML页面 可以与服务器上的其他资源进行通信,包括数据库、其他java应用程序以及使用其他语言编写的应用程序。 处理与多个web客户端的连接,接收来自多个web客户端输入的信息,并将结果发送到相应的web客户端。 响应对web客户端上applet的个别连接,并保持连接处理找开状态,允许在这个单一连接上进行多种数据传递。

2.2、原型图(axure)

用axure现场画(效果:)

图片.png

用户名或密码错误:

图片.png

用户名或密码正确:

图片.png

2.3、实现需求

2.3.1、需求分析

需求分解:
1、新建web项目
2、创建login.html页面
3、在login.jsp页面上添加登陆表单
4、创建LoginServlet,用于处理html页面发来的请求
5、在LoginServlet中处理业务逻辑,并响应最终结果

2.3.2、需求实现

前台页面:login.html

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="LoginServlet" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="passwd"><br>
        <input type="submit" value="登录">
        <input type="reset" value="重置">
    </form>
</body>
</html>

后台Servlet:LoginServlet.java

package manager;
​
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
​
@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
​
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
​
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setHeader("content-type", "text/html;charset=utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter pw = resp.getWriter();
​
        String username = req.getParameter("username");
        String passwd = req.getParameter("passwd");
        if ("admin".equals(username) && "123".equals(passwd)) {
            pw.println("欢迎使用xxx管理系统");
        } else {
            pw.println("用户名或密码错误,请重试");
        }
​
        pw.close();
    }
}
​

2.4、知识点补充

2.4.1、Request对象

HttpServletRequest接口代表客户的请求(用来接收用户从页面上传过来的值)。容器在调用servlet的doGet和doPost方法时,会创建一个SttpServletRequest接口的实例,作为参数传给doGet和doPost 。

方法描述
Public String getParameter(String name)获得页面传过来的指定名称的参数值
public String[] getParameterValues(String name)获以指定名称参数的所有值数组。它适用于一个参数名对应多个值的情况,如页面表单中的复选框
public java.util.Map getParameterMap()返回所有参数的一个Map对象,其中key代表参数名,value代表参数值

案例:使用servlet获得表单数据

request对象获得用户提交的数据中如果有中文会乱码,需要设置request对象的编码格式:

方法描述
Public void setCharacterEncoding(String env)重写此请求正文中使用的字符编码的名称

2.4.2、Response对象

HttpServletResponse接口代表向客户端发送的响应。容器在调用servlet的doGet和doPost方法时,同样会创建一个HttpServletResponse接口的实例,作为参数传给doGet和doPost方法.

方法描述
public sendRedirect(String arg0)传递临时响应,响应的地址由location指定。

2.5、案例拓展

2.5.1、案例一

按图实现效果

实现用户注册功能,校验用户名是否存在

使用到的知识点

HTML表单控件、HTML、Servlet

参考代码

暂无

2.6、小结

现场提问

1、Servlet类需要继承自哪一个基类?
2、在Servlet中接收Get请求和Post请求的方法是哪两个?
3、在Servlet中接收和响应数据的对象是哪两个?
4、在Servlet中响应数据时向网页打印数据使用的是哪个对象?
5、在Servlet中如何防止乱码?
6、在Servlet中如何接收页面传递的参数?

三、课程小结

3.1、知识框架图

现场提问,用XMind现场总结,再次加深学生印象

图片.png

3.2、课后作业

需求定义

开发一个用户注册的页面

需求分解

需求分解:
1、在页面中添加标题
2、在页面中添加用户名、密码、重复密码、昵称的文本框
3、在页面中添加爱好复选框
4、在页面添加性别单选按钮
5、在页面添加学历下拉列表
6、在页面添加注册、重置按钮

原型设计

图片.png

参考文献