java学习之路(1)-jsoup,tomcat故障排除,servlet的简单实用

java学习之路(1)

1.jsoup选择器

select方法本来是element的,但是document是继承element所以可以用document来选择。

select方法的几个速记点:

  1. https://www.open-open.com/jsoup/selector-syntax.htm 官方的cookbook做自己的参考手册
  2. Jsoup.parse 是html和xml的解析手段,可以直接传入字符串的html,也可以使用new file的方式指定文件路径传入。
String path1 = JsoupDemo1.class.getClassLoader().getResource("FirstXML.xml").toURI().getPath();Document parse = Jsoup.*parse*(new File(path1),"utf-8");

3.解析文件之后得到的是Document对象,可以使用dom方法和选择器来进行数据抽取。

Elements name = parse.getElementsByTag("name");
String text = name.text();

Elements head = document.select("head");
System.out.println(head);

4.对于选择器的具体语法可以在https://jsoup.org/apidocs/里面查询selector 类,然后可以看到Selector syntax。 https://jsoup.org/apidocs/org/jsoup/select/Selector.html。

2.java的命名规范

1.类名称是单词首字母大写,比如PaymentOrder。

2.方法第一个单词首字母小写,后面单词的首字母大写。如sendMessage。

3.常量名:全大写,下划线分割

4.包名小写

3.XPath

1.可以用来解析xml和html。

2.使用Jsoup的Xpath需要额外导入jar包。

3.参考文档: https://www.w3cschool.cn/xpath/

4.tomcat
4.1 安装bug

1黑窗口一闪而过:

​ 原因: 没有正确配置JAVA_HOME环境变量

​ 解决方案:正确配置JAVA_HOME环境变量

2.启动报错:

原因:端口占用

解决: 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程

​ 温柔:修改自身的端口号 找到 conf/server.xml 将

​ 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。 * 好处:在访问时,就不用输入端口号

4.2 关闭

1.正常关闭: * bin/shutdown.bat * ctrl+c

2.强制关闭: * 点击启动窗口的×

4.3项目部署,建议直接结合开发工具

1.手动:https://www.bilibili.com/video/BV11741127ic?p=114

2.结合idea:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Servlet
1.简介

Servlet实质上就是接口,定义了java类被浏览器访问到tomcat的规则。
将来我们自定义一个类,实现servlet类接口,重写方法。

2.在web.xml写注释配置servlet

在这里插入图片描述
在这里插入图片描述

其中,pattern定义的是浏览器的输入模式,然后name定义的是servlet类的名字,利用这个名字在上面找到servlet的类。当浏览器输入地址的时候,通过主机端口找到对应的资源。在webxml中找demo的资源,利用资源名找到对应的类,然后通过反射机制,将全类名对应的字节码加载进内存,创建对象,调用service方法。

在这里插入图片描述

3.在tomcat已经运行的情况下浏览器没能访问服务

自己tomcat一直没有找到路径的原因是因为采用了war_exploded方式,所以正确的路径是 http://localhost:8080/TomcatPractice_war_exploded/hello。

在tomcat的按钮可以按下去的时候,尤其是本地的控制台已经提示成功连接的时候,说明tomcat和程序已经跑起来了。这个时候如果浏览器无法访问服务就要考虑是否是输错了地址。

4.sevlet的初始化方法

默认情况下只有在某个类被访问的时候才会调用,所以只是将服务器打开是不会使用初始化方法的。在xml中可以指定servlet的创建时机。

<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>slowsail.javaweb.servlet.HelloServlet</servlet-class>
<!-- 指定servlet的创建时机
1.第一次访问的时候创建配置值为负数。
2.在服务器启动的时候创建则配置为非负数。

-->
<load-on-startup> -1</load-on-startup>
</servlet>

servelet的init方法只执行一次,说明servelet是单例的。

service destroy只有在服务器正常关闭的时候才会执行。在servlet销毁之前执行。

5.sevlet的线程安全问题

多个用户同时访问时可能存在线程安全问题:解决方案:尽量不在servlet对象中定义成员变量,而是在方法中定义局部变量。即使定义了成员变量,也不要对其赋值。

6.方便的注解配置

在类中进行注解。

@WebServlet(urlPatterns = "/demo")
public class SevletDemo implements Servlet {

其中注解也可以简写

其中注解也可以简写

@WebServlet("/demo")
public class SevletDemo implements Servlet {
7.Servlet的体系结构

Servlet – 接口 | GenericServlet – 抽象类 | HttpServlet – 抽象类

GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
HttpServlet:对http协议的一种封装,简化操作

1. 定义类继承HttpServlet

2. 复写doGet/doPost方法

区别于servlet接口,上述的两个类都是抽象类,所以继承用的是extends。

实际我们多用HttpServlet,因为实际上我们多用get和post方法。在service中我们常常需要判断到底是用何种方法,而HttpServlet只用我们实现在判断完是用post还是get之后的动作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值