servlet

getServletConfig,service

servlet信息   建立与客户端连接(工作)

明确

一.servlet是什么?

二.servlet的使用

学习过程:

一.先讲了servlet是什么,然后在servlet的中写道 System.out.println("这是服务器,客户端请求已接收"); 用tomcat建立好连接,访问到local8080目录,然后写道 /index.jsp

建立了另一个test.jsp,在目录中访问 /test.jsp

明白了localhost页面的访问机制与文件夹类似

二.然后尝试访问servlet,将目录输入,然后失败。

利用映射,在web.xml中建立目录映射

1.sevlet  将java文件重命名为abc

2.sevlet-mapping ,将abc与/abc对应起来

此时localhost:8080/abc即可访问到servlet

三.然后在sevlet中进行功能添加

明白 Response为响应,Request为接收

①想在前端做出中文响应:

servletResponse.setContentType("text/html;charset=UTF-8");
servletResponse.getWriter().write("客户端你好,我来了!收到id为"+id);

②接收前端数据

String id= servletRequest.getParameter("id");

映射service中的内容,在web.xml中做


<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>

注解

@WebServlet("/demo1")
public class HelloServlet implements Servlet {
}

只调⽤⼀次,卸载对象。

四.Servlet 的⽣命周期
1、当浏览器访问 Servlet 的时候,Tomcat 会查询当前 Servlet 的实例化对象是否存在,如果不存在,
则通过反射机制动态创建对象,如果存在,直接执⾏第 3 步。
2、调⽤ init ⽅法完成初始化操作。
3、调⽤ service ⽅法完成业务逻辑操作。
4、关闭 Tomcat 时,会调⽤ destory ⽅法,释放当前对象所占⽤的资源。
 
 
Servlet 的⽣命周期⽅法:⽆参构造函数、init、service、destory
1、⽆参构造函数只调⽤⼀次,创建对象。
2、init 只调⽤⼀次,初始化对象。
3、service 调⽤ N 次,执⾏业务⽅法。
4、destory


在server中干响应的事




public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
   String id= servletRequest.getParameter("id");                //接收到前端传来的数据
    System.out.println("这是服务器,客户端请求已接收");        //后端接收到了
    servletResponse.setContentType("text/html;charset=UTF-8");    //用于显示中文
    servletResponse.getWriter().write("客户端你好,我来了!收到id为"+id);  //前端进行响应
}

反射

public static  void main(String[] args) {
        String str="com.servlet.HelloServlet";
        try {
            //反射   先拿到方法,然后去调一个对象
            //正常为  先调对象,再拿方法
            Class clazz=Class.forName(str);
            Constructor constructor=clazz.getConstructor();  //获取构造方法
            Object object=constructor.newInstance();    //用这个方法调用一个对象
            System.out.println(object);
        } catch (Exception e) {
            e.printStackTrace();
        }

 五.Servlet 的层次结构

1.关系
Servlet --->GenericServlet --->HttpServlet
2.HTTP请求类型
HTTP 请求有很多种类型,常⽤的有四种:
GET 读取
POST 保存
PUT 修改
DELETE 删除
3.实现与继承关系
GenericServlet 实现 Servlet 接⼝,同时为它的⼦类屏蔽了不常⽤的⽅法,⼦类只需要重写 service ⽅法即可。
HttpServlet 继承 GenericServlet,根据请求类型进⾏分发处理,GET 进⼊ doGET ⽅法,POST 进⼊doPOST ⽅法。
 
*开发者⾃定义的 Servlet 类只需要继承 HttpServlet 即可,重新 doGET 和 doPOST
public class TestServlet extends HttpServlet {
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
 resp.getWriter().write("GET");
 }
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
 resp.getWriter().write("POST");
 }
}
 

server在此例子能够接收前端数据以及做出响应。

此外它还能使jsp传到前端,控制显示页面

以及连接数据库

晚上模拟了一遍,tomcat一直报错,最后发现原因在web.xml那里

忘了把名字前面加上/

原文地址:https://www.cnblogs.com/hanabi-521/p/14271019.html