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. isAlive

    线程存活 当线程执行时显示线程存活 执行完毕为false

  2. linux 上安装kapacitor

    转载请注明出处: 1.通过安装包安装 1.使用以下命令下载安装包: wget https://dl.influxdata.com/kapacitor/releases/kapacitor_1.6.3- ...

  3. Java使用线程池和缓存提高接口QPS

    1.什么是QPS? QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒可以相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标 ...

  4. 开源.NetCore通用工具库Xmtool使用连载 - 图像处理篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的扩展动态对象,今天我们继续为大家介绍其中的图像处理类库. 在我们的软件系统中,经常需要对图片进行各种各样的处理:例如最常见的头 ...

  5. java判断两个日期是否连续

    使用java判断两个日期的天是否连续 import java.text.SimpleDateFormat; import java.util.Date; /** * @author lingkang ...

  6. CodeForces 1141F2 贪心 离散化

    CodeForces 1141F2 贪心 离散化 题意 给定一个序列,要求我们找出最多数量的不相交区间,每个区间和都相等. 思路 一开始没有头绪,不过看到 \(n \le 1500\) 后想到可以把所 ...

  7. FlinkSQL实战开发

    FlinkSQL实战开发 1.基础知识 FlinkSQL分为Table API和SQL API,是架构于Flink Core之上用SQL予以方便快捷地进行结构化数据处理的上层库. 工作流程 SQL和T ...

  8. JavaScript异步编程2——结合XMLHttpRequest使用Promise

    目录 1. 概述 2. 详论 3. 参考 1. 概述 在上一篇文章<JavaScript异步编程1--Promise的初步使用>,简单介绍了一下Promise的初步使用.复习一下,Prom ...

  9. 什么是HuggingFace

    一.HuggingFace简介 1.HuggingFace是什么 可以理解为对于AI开发者的GitHub,提供了模型.数据集(文本|图像|音频|视频).类库(比如transformers|peft|a ...

  10. 高性能利器!华为云MRS ClickHouse重磅推出!

    摘要:华为智能数据湖MRS服务即将上线ClickHouse高性能引擎集群,用户只需要几分钟,就可以轻松方便地一键式完成集群部署搭建,快速拥有PB级数据的秒级交互查询分析能力,帮助用户带来极致的性能体验 ...