1. 安装

tomcat.apache.org

下载链接:https://tomcat.apache.org/download-80.cgi

2. 初识tomcat

bin

start.bat -->localhost:8080 (JDK依赖)

shutdowm.bat

conf

server.xml --8080默认值

lib 目录jar包

jsp.jar 重要

serverlet.jar 重要

webapps目录

web项目 打成war包

运行startup.bat 并在浏览器中访问 localhost:8080

说明已经能正常使用

2. 创建tomcat项目

new project

注意 javaEE 需要勾选 web application

new Class MyServlet



导包

继承HttpServlet 并重写方法

package com.msb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 11:34
* @Description: com.msb
* @version: 1.0
*/
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
} @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("my first web project");
System.out.println("my first web project");
}
}

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>mysevlet</servlet-name>
<servlet-class>com.msb.MyServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>mysevlet</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>

3. 启动之前

-->

启动webserver



package com.msb;

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; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 15:03
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
@WebServlet(name = "MyServlet2")
public class MyServlet2 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("second hehe !");
}
}

web.xml文件配置 增加

    <servlet>
<servlet-name>mysevlet2</servlet-name>
<servlet-class>com.msb.MyServlet2</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>mysevlet2</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>

再访问

http://localhost:8080/firstweb/second

创建servles实例

调用init()方法

调用service方法

输出相应

调用destory方法

web.xml其他配置

load-on-startup 1 启动tomcat的时候就会创建serverlet对象 1表示优先级

3. java jsp

增加method.jsp并访问

<%--
Created by IntelliJ IDEA.
User: chenw
Date: 2023/10/15
Time: 15:28
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/firstweb/method", method="post">
用户名:<input type="text" name="username" value="" /><br/>
密码:<input type="text" name="password" value="" /><br/>
<input type="submit", value="登录"> </form> </body>
</html>

http://localhost:8080/firstweb/method.jsp



package com.msb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 15:22
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
public class MethodServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("/method post");
response.getWriter().write("hello");
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("/method get"); }
}

4. Request Response对象的其他属性

package com.msb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sound.midi.Soundbank;
import java.io.IOException;
import java.net.URI;
import java.util.Enumeration; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 15:56
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
public class TestRequestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("test request post 请求");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
System.out.println("name:"+name);
System.out.println("pwd:"+pwd); String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr:"+remoteAddr); String remoteHost = request.getRemoteHost();
System.out.println("remoteHost:"+remoteHost); int remotePort = request.getRemotePort();
System.out.println("remotePort:"+remotePort); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("test request get 请求"); String method = request.getMethod();
System.out.println("method: "+method); String requestURI = request.getRequestURI();
System.out.println("uri:" + requestURI); StringBuffer requestURL = request.getRequestURL();
System.out.println("url:"+requestURL); //协议
String scheme = request.getScheme();
System.out.println("schema:"+scheme); // 请求头 User-Agent的value
String ua = request.getHeader("Yser-Agent");
System.out.println("ua:"+ua); Enumeration<String> headerNames = request.getHeaderNames();// 所有header key
while (headerNames.hasMoreElements()){
String s = headerNames.nextElement();
String header = request.getHeader(s);
System.out.println("key:"+s);
System.out.println("header:"+ header);
} response.getWriter().write("hello"); }
}



5. 用户登录小功能

用户登录流程:

  1. 用户GET请求返回原生的页面
  2. 客户端 填写相应的数据 发起POST请求
  3. 服务端逻辑校验处理
  4. 服务端返回处理的结果

导包:

setting--project struture--module--jar

添加 tomcat安装位置lib下面的servlet_api.jar

package com.msb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 19:52
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
public class PageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Post method");
response.getWriter().write("welcome !"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("get method !!!!");
response.setContentType("text/html"); PrintWriter writer = response.getWriter();
writer.write("<html>");
writer.write("<header>");
writer.write("</header>");
writer.write("<body>");
writer.write("<form action='/user/login', method='post'>"); writer.write("username:<input type='login' name='name' value=''></br>");
writer.write("password:<input type='login' name='pwd' value=''></br>");
writer.write("<input type='submit' value='login'>"); writer.write("</form>");
writer.write("</body>");
writer.write("</html>");
}
}
<?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>PageServlet</servlet-name>
<servlet-class>com.msb.PageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PageServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping> </web-app>



mysql for java驱动下载地址:

https://downloads.mysql.com/archives/c-j/

数据库:

项目结构:

LoginServlet

package com.msb.control;

import com.msb.entity.User;
import com.msb.service.UserService;
import com.msb.service.impl.UserServiceImpl; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 20:29
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
public class LoginServlet extends HttpServlet { UserService userService = new UserServiceImpl(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("post method !");
String name = request.getParameter("name");
String pwd= request.getParameter("pwd"); User user = new User(name, pwd);
User u = null;
try {
u = userService.checkUser(user);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
if (u!=null){
response.getWriter().write("welcome:" + u.getName());
}else{
System.out.println(403);
response.setStatus(403, "not permitted");
} } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
}

UserDaoImpl

package com.msb.dao.impl;

import com.msb.dao.UserDao;
import com.msb.entity.User; import java.sql.*;
import java.util.Map; /**
* @Auther: jack.chen
* @Date: 2023/10/15 - 10 - 15 - 20:28
* @Description: com.msb.dao.impl
* @version: 1.0
*/
public class UserDaoImpl implements UserDao {
@Override
public User checkUser(User user) throws ClassNotFoundException, SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User u = null; // System.out.println("user:" + user.toString()); // 加载包
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jackdb", "root", ""); pstmt = conn.prepareStatement("select * from `user` where username = ? and pwd =?"); pstmt.setString(1, user.getName());
pstmt.setString(2, user.getPwd()); rs = pstmt.executeQuery();
while (rs.next()){
u = new User(rs.getInt("id"), rs.getString("username"), rs.getString("pwd"));
}
return u;
} }

调用路径:

control --> service --> dao

终于搞定:

经验:

  1. mysql java驱动
  2. navicate 的使用
  3. mysql的使用

java项目实践-tomcat实现用户登录-day17的更多相关文章

  1. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  2. eclipse中SSM(maven)项目搭建全过程+实现用户登录功能

    项目创建之前确保eclipse中已经配置好了jdk,tomcat,maven如果没有配置下面有配置教程的链接   eclipse中配置jdk的教程url:http://www.cnblogs.com/ ...

  3. 一次从0到1的java项目实践清单

    虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...

  4. 一份从0到1的java项目实践清单

    虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...

  5. UCenter在JAVA项目中实现的单点登录应用实例

    Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...

  6. Java SSH框架系列:用户登录模块的设计与实现思路

    1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...

  7. 使用jsp,tomcat实现用户登录注册留言的代码

    以下jsp中,未使用样式表对网页进行排版和表单的验证(每个jsp的表单填写的时候应该进行空值与空格的验证,防止提交时出错) 所有错误,链接到error.jsp <%@ page language ...

  8. Java项目使用 Tomcat 部署 Linux 服务器

    一.安装 Java 环境 1 下载 jdk 8 yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 设置 centos7 环境变量 v ...

  9. 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)

    登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...

  10. Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat

    一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...

随机推荐

  1. JUC_start和run

    类型: run方法是同步 而start是异步 作用: run方法的作用是存放任务代码   ,start的方法是启动线程 线程数量方面: 执行run方法,他不会产生新线程,而执行start方法hi产生新 ...

  2. 如何对连续型数据进行离散化处理,并进行OneHot编码?

    如何对连续型数据进行离散化处理,并进行OneHot编码,最终将OneHot编码作为特征因子输入模型? 什么是OneHot编码 One-Hot编码是分类变量作为二进制向量的表示.这首先要求将分类值映射到 ...

  3. python 图片相关

    python 图片相关 本篇介绍两种方式来打开图片. 1: 使用matplotlib #!/usr/bin/python3 # -*- coding: UTF-8 -*- ""&q ...

  4. 中间件是开箱即用的吗?为什么要开发中间件adapter?

    本文分享自华为云社区<中间件是开箱即用的吗?为什么要开发中间件adapter?>,作者:张俭. 中间件在很多系统中都存在 在一个系统里面,或多或少地都会有中间件的存在,总会有数据库,其他的 ...

  5. vue3 + element-plus 的 upload + axios + django 文件上传并保存

    之前在网上搜了好多教程,一直没有找到合适自己的,要么只有前端部分没有后端,要么就是写的不是很明白.所以还得靠自己摸索出来后,来此记录一下整个过程. 其实就是不要用默认的 action,要手动实现上传方 ...

  6. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使 ...

  7. 构建万物互联,华为云IoT+鸿蒙重燃物体感知

    摘要:鸿蒙的出现,让硬件.软件行业面临着变革与重构的洪流,但激流勇进中,也潜藏着巨大机遇.物联网设备与鸿蒙结合成为必然趋势,本文将解读华为云IoT+鸿蒙如何强强联合,为物联网行业提供新的思路和方法. ...

  8. Apache HBase MTTR 优化实践:减少恢复时长

    摘要:HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库,它具有高可靠.高性能.面向列和可伸缩的特性,提供快速随机访问海量数据能力. 本文分享自华 ...

  9. 百度高德地图行政区域边界GeoJSON数据获取并绘制行政区域

    highcharts 是提供地图数据包的:https://www.highcharts.com/docs/maps/map-collection echart矢量地图或者地图绘制矢量图层,GeoJSO ...

  10. SDK设计与封装:从基础概念入门到架构设计落地笔记

    什么是 SDK? SDK 全称 Software Development Kit,广义上的 SDK 是为特定的软件包.软件框架.硬件平台.操作系统等建立应用程序时所使用的开发工具的集合(在 iOS 项 ...