1.javaweb环境搭建
1.0常见的web服务器:
WebLogic:Oracle公司(支持JavaEE,javaee规范)
WebSphere IBM 的软件平台(支持J2EE规范)
Tomcat (apache免费)(支持jsp和servlet,但不支持EJB(要用JBOSS(以前免费,现在收费)))
注:本章着重讲TomCat
1.1环境变量
配置JAVA_HOME,路径指向jdk就行,不要指向bin文件不是配置path文件
1.2Tomcat下载
TomCat的下载地址 https://tomcat.apache.org/download-90.cgi(注意:选择最稳定的版本)
将Tomcat解压到本地磁盘(目录不要汉字和空格) 设置环境变量:JAVA_HOME 设置 C:\Program Files\Java\jdk1.8.0_74 启动Tomcat E:\java\jsp\software\apache-tomcat-9.0.34\bin\startup.bat(最好放一个快捷方式在桌面,方便,关闭同理) 在地址栏中输入:http://localhost:8080/,如果看下图中的欢迎界面,Tomcat运行成功。
学习javaweb最好用解压版(解压完即可,比安装版简便),最好别用安装版,对于学习javaweb,TomCat会随时面临着被我们倒腾坏,一但服务器崩溃了,解压版可以直接通过解压来重新使用,但安装版麻烦可能稍微有点大了。
2Tomcat基础用法简绍
2.1TomCat文件目录
cont | 配置文件 |
connector | 端口 |
lib | jar包 |
logs | 日志 |
temp | 临时文件 |
webapps | 应用 |
work | 工作目录 |
2.2Tomcat发布项目的三种方法:
2.2.1 项目直接放在webapps目录
先创建一个工程文件(现在不要这么注意文件里的文件格式,仅仅只是一个小小的测试),在文件中创建一个文件名为index(文件名必须是index,这是默认访问)HTML文件在上面随便写点”英文单词"(如果有点问题写中文可能会乱码)我写的就是我们的老熟人·"Hello Would",把创建的整个文件放在 Tomcat 中的TomCatJavaWebDatabase\apache-tomcat-9.0.94\webapps路径中(webapps文件下),让TomCat可以直接访问文件,如下图
在准备好文件之后,打开apache-tomcat-9.0.94\bin中的startup.bat开启服务器,在浏览器上输入localhost:8080/myweb/网页页面会显示你之前在index输入的数据,就如我这一样
2.2.2 映射法(写起来有点麻烦)
创建的工程文件放在Tomcat外最好别放在TomCat中,不能放在webapps中,如图:
文件创建(可以暂时不按规范来只是测试)如下图创建文件,在index.html文件下随便写点网页,
我是随便在网上复制一点内容
现在再去你的TomCat里寻找配置文件TomCatJavaWebDatabase\apache-tomcat-9.0.94\conf\
server.xml,可以用记事本打开,最好是去下一个EditPlus,在后面部分 </Engine> 前添加一个主机
<Host name ="虚拟名(等会网页上输入的路径)" appBase="文件所在的根目录上一级目录">
<Context path="可以不用写默认" docBase="文件所在的根目录"/>
再去c盘找你的hosts配置文件C:\Windows\System32\drivers\etc\hosts,设置一个ip,配置文件改不了可以复制到的D盘在复制回去即可(一定要检查写进去没有)
你的加入即可(IP 你上面设置的虚拟路径)
最后打开TomCat输入虚拟路径在加上你的端口号即可,切记如果你懒不想写的口号,web默认为80可以把端口号修改成80,但请注意可能你的80端口被其他服务占取无法使用,所以最保守的还是加上端口号。
2.2.3 可以在Catalina(服务器引擎,注意是conf\Catalina\localhost中创建)中新建一个任意的xml文件并在里边写入<Context docBase="D:\hello"/>,那么这个xml文件的名字就是我们的虚拟目录,如果文件为 aaa#bbb就是两级虚拟目录
2.2.4用户设置
配置tomcat的管理器的用户名和密码:
设置管理员与高级管理员在TomCatJavaWebDatabase\apache-tomcat-9.0.94\conf文件中选择tomcat-users.xml文件如上图 格式如下
管理员:
<role rolename="manager-gui"/>
<user username="用户名" password="密码" roles="manager-gui"/>
超级管理员:
<role rolename="admin-gui"/>
<user username="用户名" password="密码" roles="admin-gui"/>
3.Servlet入门
2.0环境变量classpath:D:\JavaWebMain\TomCatJavaWebDatabase\apache-tomcat-9.0.94\lib中的
请指向你的servlet-api.jar和jsp-api.jar
3.1用IDEA调用TomCat
下面是创建文件的基本格式,在webapps里创建一个文件夹myweb,作为你的网站根目录 在myweb中创建一个目录WEB-INF 在WEB-INF中创建一个classes目录 在WEB-INF中创建一个web.xml
现在ieda创建随便一个工程,选择run中的edit Configuratio,添加一个TomCat,选择的路径即可
设置好TomCat后创建一个Java Enterprise工程(先选择 Java ee version :java ee 8)在选择勾选web Application即可进行创建
工程创建后他会给你生成web文件与WEB-INF文件,记清楚不同内容文件放的位置,不要放错了,html一定不要放在WEB-INF文件中TomCat的保护机制会让你访问不到,从而生成400以上的问题(路径不对),检查导入的包是否有TomCat。
文件创建好后我们在虚拟代码区建包,建立Java文件。
普通的java是无法和web相链接,所以我们这有一个类(HttpServlet)的继承去实现让Java可以链接,我们先学习web响应与激励,dopost与daget学习如下代码我们分别在网页上打印与回收。
一般链接
运行结果:(注:运行后一定要输入加路径跳转!!!)
上面的方法可以结合使用,但注意方法必须有激励和响应,不能只有激励,不能只有响应,不然只有用dopose与doget分开用,service方法,有一个乱码问题,service输入中文,你这中文输入激励,会传到终端需要一次转码,最后才会传入服务器html还需要一次转码,因此乱码问题会很频繁,不进行乱码处理或者少一步都会出错。如下图:
运行结果:
用映射链接如下代码:
package com.test;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//我们映射之后不能子啊用@Sevrlet()去调用
public class ServletDemo5 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("ServletDemo5");
}
@Override
public void destroy() {
System.out.println("servlet消亡了!");
}
@Override
public void init() throws ServletException {
System.out.println("servlet创建了!");
}
}
映射法我们需要在WEB-INF文件中web.xml文件上加虚拟路径
<servlet>
<servlet-name>ServletDemo5</servlet-name>
<servlet-class>com.test.ServletDemo5</servlet-class>
<load-on-startup>1</load-on-startup>
<!-- 如果进行如下设置<load-on-startup>1</load-on-startup>,servlet会跟随服务器的启动而创建。 -->
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo5</servlet-name>
<url-pattern>/ServletDemo5</url-pattern>
</servlet-mapping>
最后我们调用调用时候直接输入虚拟路径即可
3.2Servelt的生命周期
默认情况下,第一次调用时创建,一直在内存中,直到服务器关闭,servlet才会消亡。如果进行如下设置<load-on-startup>1</load-on-startup>,servlet会跟随服务器的启动而创建。代码输如下
2