这是应付学校实训写的辣鸡项目,用的是Servlet+JSP这样过时的技术。。。无聊的话可以看下,源码链接:here
Tomcat目录结构 | |
---|---|
bin | 一些启动/关闭脚本,运行Tomcat的可执行程序和相关内容 |
conf | Tomcat服务器的配置文件,包括 server.xml(Tomcat的主要配置文件)和为不同的Tomcat配置的web应用设置缺省值的文件web.xml |
lib | Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包。unix平台此目录下的任何文件都被加到Tomcat的classpath中 |
logs | Tomcat的日志文件 |
temp | 存放临时文件 |
webapps | 默认的站点根目录(可以更改)。当发布web应用时,默认情况下把web文件夹放于此目录下 |
work | Tomcat自动生成,用于在服务器运行时过度的临时文件,就是存储jsp、servlet翻译、编译后的结果。如在Tomcat运行时删除此目录,JSP页面将不能运行, jsp生成的sevlet放在此目录下 |
Tomcat常用端口号 | (ps:修改了这三个端口号,就可以在一台主机上启动多个Tomcat了 |
---|---|
8005 | Tomcat 监听的关闭端口 |
8080 | Tomcat的服务端口 |
8009 | 接受其他服务器转发过来的请求 |
如果你想要运行多个Tomcat,就修改其他Tomcat的端口号使之不重复即可
修改文件位置:apache-tomcat-9.0.21\conf\server.xml
Tomcat环境编码设置(可选)
还是上面那个文件,添加内容:URIEncoding="UTF-8"
在 A p a c h e Apache Apache的官方网站下载Tomcat。下载最新的解压版本后,本地直接解压即可。建议下载8或9版本。
配置环境变量:
J D K JDK JDK的环境变量默认大家都配置好了。
T o m c a t Tomcat Tomcat的环境变量:变量名:CATALINA_HOME
,变量值(你的解压目录):E:\ashixun\apache-tomcat-9.0.21
启动Tomcat:
在目录apache-tomcat-9.0.21\bin
下双击startup.bat文件或者命令行输入startup
或start tomcat9.exe
或者catalina run
都可以。
输入网址:localhost:8080
看是否启动成功,成功界面如下:
如何我们修改了 c l a s s class class文件,可以让 T o m c a t Tomcat Tomcat自动重启生效;
修改文件位置:apache-tomcat-9.0.21\conf\server.xml
在
内部添加
标签:
docBase
:项目路径,可以使用绝对路径或相对路径,相对路径是相对于 w e b a p p s webapps webapps
path
:访问项目的路径
reloadable
:是否自动加载新增或改变的 c l a s s class class文件
debug
:属性与这个 E n g i n e Engine Engine关联的 L o g g e r Logger Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 也就是程序异常时写入日志文件里的详细程度。
文件位置:apache-tomcat-9.0.21\bin\catalina.bat
问题原因在tomcat默认是UTF-8编码,而win的终端默认是GBK编码。
解决:找到如下logging.properties
文件,将第51行的控制台UTF-8编码改为GBK即可。
参考:purplestone,http简介,其他
点击以下超链接,出现登录窗口,然后点击取消。
会弹出这个页面,复制以下代码到comf/tomcat-users.xml
,再进行登录即可进入管理页面。
可以看到当前有哪些项目部署在tomcat ,也可以从这里进入某个项目中http://localhost:8080/manager/html
新建 M a v e n Maven Maven项目,那个create from archetype
暂时不用选。
G r o u p I d GroupId GroupId(一般是公司域名的倒写)和 A r t i f a c t I d ArtifactId ArtifactId(一般是你的项目名字)被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到 m a v e n maven maven本地仓库去,你想要找到你的项目就必须根据这两个 i d id id去查找。
添加 w e b a p p webapp webapp项目,右键项目Add Framework Support
然后就出现了一个web项目如下:
点击界面Run
,然后选择Run...
,再点Edit Configurations...
(你的应该不会显示bookcity
这一项的,因为我之前编辑过所以有,你执行完以下步骤就有了)
然后点+
号,找到最下面的Tomcat Server
。
先选中你的服务器,然后修改URL,设置项目发布路径,即虚拟路径。
点击Deployment
,注意保持Application context内容和前面虚拟路径内容相同,我这里都是bookcity
确认后返回。点击界面Run
,然后选择Run...
,再点bookcity
运行,默认浏览器就会打开一个界面,显示index.jsp
的网页效果。
需要注意的是此时发布的 w e b web web项目其目录为localhost:8080/bookcity
,而项目的根目录即localhost:8080
为 T o m c a t w e b a p p s Tomcat webapps Tomcatwebapps中自带的 R O O T ROOT ROOT项目,具体原因涉及到 T o m c a t Tomcat Tomcat的配置文件。
在src->main->java
下新建一个包com.demo.servlet
,然后在此包下新建一个HelloServlet
类
首先让HelloServlet
类继承HttpServlet
:
不出意外应该idea不会给你自动补全·HttpServlet·这个类并且还会报错。
因为这个项目没有导入对servlet
支持的jar包。
而 M a v e n Maven Maven项目的方便就在于他可以自动帮你导入各种你需要jar包!
你只需导入相应的代码即可,查询jar包对应代码的网站:here
javax.servlet
javax.servlet-api
3.1.0
provided
将代码复制到pom.xml
文件即可:
下面是web.xml
的内容,配置 web.xml
后,才能让别人调用:
<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">
<display-name>bookcitydisplay-name>
<servlet>
<servlet-name>HelloServletservlet-name>
<servlet-class>com.demo.servlet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>HelloServletservlet-name>
<url-pattern>/hellourl-pattern>
servlet-mapping>
web-app>
下面是HelloServlet
的完整内容:
/**
* Copyright (C), 2018-2019, csust
* FileName: HttpServlet
* Author: Cwolf9
* Date: 2019/06/18 16:06
* Description:
* History:
* <author> <time> <version> <desc>
* Cwolf9 2019/06/18 2018.3
* <p>
* 〈可怕的是比你强的人比你还努力〉
* 〈〉
*
* @author Cwolf9
* @create 2019/06/18
* @since 1.0.0
*/
/**
* 〈可怕的是比你强的人比你还努力〉
* 〈〉
*
* @author Cwolf9
* @create 2019/06/18
* @since 1.0.0
*/
package com.demo.servlet;
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;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
response.setCharacterEncoding("UTF-8");
String userId = request.getParameter("userId");
String pwd = request.getParameter("pwd");
if("admin".equals(userId) && "password".equals(pwd)){
out.println("success");
}else{
out.println("fail");
}
out.println("<br/>");
String servletPath = this.getServletContext().getRealPath("/");
out.println(servletPath);
out.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
启动服务器,然后访问:http://localhost:8080/bookcity/hello ,页面如下:
按照HelloServlet 中的写法,你应该这么访问:http://localhost:8080/bookcity/hello?userId=admin&pwd=password,这样返回的页面就是success:
https://blog.csdn.net/qq_15237993/article/details/72868089
https://blog.csdn.net/xybz1993/article/details/81023955
创建用户:create user 'xxx'@'%' identified by 'xxx';
赋予权限:grant all privileges on *.* to xxx@"%";
使之生效:flush privileges;
修改密码:alter user'xxx'@'%' IDENTIFIED BY '1234567';
删除用户:drop user'xxx';
要让别人能远程连接你本地的数据库,你们得在同一个局域网下,其次你要开放你的一个端口。
windows查看端口命令:netstat -an
,netstat -ano
,netstat -an|findstr "3306"
linux查看端口:nmap -sP ip地址
,lsof -i:8000
win开放端口:
win+s
搜索:高级,点进去设置一个出站规则,创建类型选择端口,然后设置TCP端口3306,规则名叫3306in,保存即可。
搞完这些同局域网下的其他人应该就可以通过你的ip地址和端口连接上你本机的数据库了。
Host填你想连接的主机的ip地址
User填其数据库的一个账户名
Password填密码
点击Test Connection
查看是否成功。