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. SpringBoot整合JavaMail

    1.发送简单邮件 导入依赖 implementation 'org.springframework.boot:spring-boot-starter-mail:3.0.2' 开启相关协议,获取密码~ ...

  2. jextract的使用

    写这个博客的目的:新人去看jextract的官网是看不懂的,就算看懂了也不会使用,一头雾水,我会从0开始教如何使用,如何搭配java去调用c函数. 首先我们得了解jextract是什么,官网的解释是一 ...

  3. 你是否想知道如何应对高并发?Go语言为你提供了答案!

    并发编程是当前软件领域中不可忽视的一个关键概念.随着CPU等硬件的不断发展,我们都渴望让我们的程序运行速度更快.更快.而Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够 ...

  4. 从零玩转设计模式之建造者模式-jianzaozhemoshi

    title: 从零玩转设计模式之建造者模式 date: 2022-12-08 18:15:30.898 updated: 2022-12-23 15:35:58.428 url: https://ww ...

  5. AntDesignBlazor示例——暗黑模式

    本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/BlazorDemo 1. 学习目标 暗黑模式切 ...

  6. 如何在IIS上部署docsify以及404问题

    操作步骤 创建一个文件夹,在文件夹中新建2个文件 index.html:入口文件,整个网站只需要这个html文件,其他文件都是md文件 README.md:主页内容,如果没有这个文件,访问时提示404 ...

  7. .NET技术分享日活动-202202

    2022年02月19日下午,个人组织举办了山东地区的第四次.NET技术分享日活动.主要包含.NET常用技术.低代码.大前端.大数据和工作流等五个技术领域. 本次技术分享日活动面向了山东地区广大的.NE ...

  8. Xshell与Xftp安装与使用

    Xshell与Xftp安装 软件安装:官网或者应用商店 安装结束 nslicense.dll替换 下载文件 使用 登录 双击刚刚建立的连接 表示建立成功 点击文件传输 右边就是服务器的文件,左边就是本 ...

  9. 爬取Discuz!社区的教程标题

    爬取Discuz!社区的教程标题-史上最详细解析(实现分页) 摘要:本文记录了爬取Discuz!社区的教程标题的详细过程,过程清晰 这是O的第一篇博客,如有排版问题请大佬见谅,O非常希望大佬能在评论区 ...

  10. 5月20日,GaussDB将有大事发生

    摘要:5月20日,华为云TechWave云原生2.0专题将线上举行,更多云原生创新技术和丰富实践还将与大家见面,GaussDB也将再次迎来升级亮相! 本文分享自华为云社区<华为云TechWave ...