java项目实践-tomcat实现用户登录-day17
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. 用户登录小功能
用户登录流程:
- 用户GET请求返回原生的页面
- 客户端 填写相应的数据 发起POST请求
- 服务端逻辑校验处理
- 服务端返回处理的结果
导包:
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
终于搞定:

经验:
- mysql java驱动
- navicate 的使用
- mysql的使用
java项目实践-tomcat实现用户登录-day17的更多相关文章
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
- eclipse中SSM(maven)项目搭建全过程+实现用户登录功能
项目创建之前确保eclipse中已经配置好了jdk,tomcat,maven如果没有配置下面有配置教程的链接 eclipse中配置jdk的教程url:http://www.cnblogs.com/ ...
- 一次从0到1的java项目实践清单
虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...
- 一份从0到1的java项目实践清单
虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...
- UCenter在JAVA项目中实现的单点登录应用实例
Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...
- Java SSH框架系列:用户登录模块的设计与实现思路
1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...
- 使用jsp,tomcat实现用户登录注册留言的代码
以下jsp中,未使用样式表对网页进行排版和表单的验证(每个jsp的表单填写的时候应该进行空值与空格的验证,防止提交时出错) 所有错误,链接到error.jsp <%@ page language ...
- Java项目使用 Tomcat 部署 Linux 服务器
一.安装 Java 环境 1 下载 jdk 8 yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 设置 centos7 环境变量 v ...
- 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)
登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...
- Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat
一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...
随机推荐
- selenium滚动加载数据解决方案
有些网站时一直滚动就会加载新数据的,在selenium中解决方法: def loaddata_by_scroll(self, driver): js = 'return document.body.s ...
- 如何将3D模型导入可视化大屏系统中,并实现可交互的数字孪生大屏效果?
首先我们需要准备一款数字孪生软件,本文中使用的是山海鲸可视化数字孪生软件,这是一款免费的零代码数字孪生大屏开发平台软件. 下载完成后打开山海鲸可视化,点击新建来创建一个大屏项目. 我们可以根据自己的需 ...
- 初识HTML5(2)
在本文中,我将介绍HTML5的超链接标记和表格的相关标记. 超链接标记 超链接是HTML中非常重要的元素,它用于在不同网页或不同部分之间创建链接.以下是一些与超链接相关的标记和属性: 使用<a& ...
- Windows手工入侵排查思路
文章来源公众号:Bypass Windows系统被入侵后,通常会导致系统资源占用过高.异常端口和进程.可疑的账号或文件等,给业务系统带来不稳定等诸多问题.一些病毒木马会随着计算机启动而启动并获取一定的 ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 02.AI自定义任务和观察器中断
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本文章对应课程第十一章 42节.这篇文章会进一步地为AI添加新功能,创建自定义任务,允许AI发射子弹,并且讲解观 ...
- Spring源码学习笔记6——Spring bean的实例化
一丶前言 前面我们了解到读取xml or 根据扫描路径生成BeanDefinition并注册到BeanFactory,相当于我们具备了生火做饭的原材料:BeanDefinition,接下来就是Spri ...
- Rasa初始化聊天机器人的配置
本文详细介绍了使用 rasa init 初始化聊天机器人项目的配置,包括 nlu.yml.rules.yml.stories.yml.test_stories.yml.config.yml.cre ...
- .NET周报【10月最后一期 2022-11-01】
精选要闻 .NET 7 NativeAOT比.NET单文件发布文件小80% https://twitter.com/JamesNK/status/1584919726861737984?s=20&am ...
- 华为云企业级Redis揭秘第15期:Redis为什么需要强一致?
摘要:其实开源Redis的弱一致性已经不满足很多应用场景的诉求.怎么,不信? 本文分享自华为云社区<华为云企业级Redis揭秘第15期:Redis为什么需要强一致?>,作者: GaussD ...
- 如何给网页和代码做HTML加密?
如何给网页和代码做HTML加密? 本篇文章给大家谈谈html混淆加密在线,以及HTML在线加密对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔. 如何给代码加密? 1.源代码加密软件推荐使 ...