servlet起步及一点个人感慨

本文分享了作者从零开始学习Servlet的心路历程,详细介绍了Servlet的基本概念、常见Java服务器及Tomcat的使用方法,包括目录结构、启动与停止、端口修改、IDEA配置、编写第一个Servlet以及请求处理等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet

总算断断续续的学到了servlet,其中因为种种原因终止了几次,时间稍长便只剩下了点印象,只好从头再来。记得大一不止一个老师说过,学习编程,没有什么捷径,还是要多练习。现在经过亲身实践,深深感受到这句话的正确性。奉劝后来者多敲代码。
前几天看到一个大佬的一句话,感觉很有意思,分享给大家。

写代码是热爱,写到世界充满爱

加油吧,祝愿各位都有个美好的前程。

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。起到一个桥梁的作用,用于浏览器和应用程序之间进行沟通。

1. 常见的java服务器

首先声明我使用的是tomcat,因为它免费好用又小巧,反正我是这么觉得的,身边同学也用这个,出错也好讨论。

tomcat(免费的 apache)
jetty(免费的 eclipse)
jboss (jboss)
weblogic (bea, oracle)
websphere (ibm)

java se , java ee, java me

servlet, jsp, el, 都属于java ee范畴

2. tomcat 的目录结构 (**)

bin  可执行脚本目录
conf 配置文件目录
logs 日志目录
webapps  应用程序目录

3. 启动和停止 (**)

前提条件: 1. 要安装jdk, 2. 要配置JAVA_HOME 环境变量,都学到servlet了,想必这些电脑都已经有了吧

启动: bin/startup.bat (windows下)
停止: bin/shutdown.bat (windows下)
或者
在启动的黑窗口下 CTRL+C (停止程序,不是拷贝)

可以用浏览器检查它是否真正启动: 在浏览器地址栏输入 http://localhost:8080
http://127.0.0.1:8080
http://192.168.10.240:8080
当端口号为80时可以省略不写

8080是tomcat的默认端口号,当同时启动两个tomcat时就会端口号冲突,就像你去扫别人正在骑的小黄车一样,当然失败。

4. 修改端口号

在conf/server.xml 文件中搜索8080 找到后修改为其它端口号即可

5. 在idea 里配置tomcat(**)

至于为什么用idea,额,跟风吧,大佬都说好用
建一个web项目,点开run,点开edit configurations,点击加号下拉找到tomcat小猫图标,选择local,选项刚开始学没必要修改什么,改个名字吧。fix,ok就好了。下次run就会有tomcat选项了

6. 编写第一个servlet(***)

/**
 * 1. 继承 HttpServlet父类
 * 2. 使用注解 @WebServlet(urlPatterns = "浏览器访问路径")
 * 3. 覆盖父类中  service 方法
 */
@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {

    @Override
    // Request : 代表请求
    // Response : 代表响应
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("你好,世界");
        // 用servlet可以返回一段html代码,给浏览器

        // 对于中文,需要设置响应采用utf-8字符集,否则会使用英文字符集(iso-8859-1)返回响应,会有乱码问题
        resp.setContentType("text/html;charset=utf-8");

        // 向resp对象对象的字符输出流中写入的html代码都会返回给浏览器
        resp.getWriter().println("<html><body>你好,世界</body></html>");
    }
}

7. 浏览器发送请求(***)

语法:
http://ip地址:端口号/servlet地址?参数名1=参数值1&参数名2=参数值2…

?name=张三&pass=123 // name是参数名,张三是参数值, pass是参数名, 123 是参数值

例如;localhost:8080/servlet1?name=张三&pass=123

服务器要获取请求参数:
String 请求参数的值 = request.getParameter(“请求参数名”);

注意:
如果某个参数没有传递,使用request.getParameter()返回的是null值
request.getParameter()返回的总是字符串,需要自己做数据类型转换

7. 请求类型(***)

  1. get 请求 直接通过浏览器地址发送的请求
  2. post 请求
    表单form既可以发送get请求,也可以发送post请求
    区别: 1) get请求会把所有请求参数跟在地址栏之后,不适合发送敏感信息
    而post请求不会把请求参数跟在地址栏之后
    2) 不要以为post请求是安全的,通过一些网络监测工具仍然可以看到post中的参数信息
    http 是不安全的,都是明文发送给服务器的
    https 是安全的,会把信息发送给服务器的过程中进行加密
    https 和post结合可以保证向服务器传输数据的安全性
    3) get请求传输的数据有限制, post请求没有限制(任意大小的数据都可以发送给服务器)
    4) get 意味着获取信息(对应查询操作)
    post 意味着增,改,删等操作

对于post请求,会有中文乱码问题,解决方法是调用:
// 手工进行解码, 需要放在所有 req.getParameter方法之前调用
req.setCharacterEncoding(“utf-8”);

注意: tomcat 8 已经对get请求中的中文按utf-8进行解码了, 所以程序员不需要对get请求的中文进行额外处理
tomcat 7, tomcat 6 … 对get请求中的中文还需要特殊处理

至于用新版还是用旧版,这个问题从一开始学java装jdk就在让我烦恼,怎么说呢,各有千秋吧,用旧版可以让你多踩踩坑加深印象,用新版让你多了解下新特性。看个人喜好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值