关于servlet的一些基本用法

1. IDEA新建一个web application

2. 写一个继承HttpServlet的类,其中可以重写 init,doGet,doPost,destroy等等方法。见明知意。常见的HTTP请求类型都是可以do的。

(以下所有的HTTP请求类型我称为do方法。这样感觉还挺像rest风格的)

3. web.xml配置servlet的名称,类路径,mapping,还是贴个简易的代码吧

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

这里是给HelloServlet配了两个路径,多路径就是这样一个一个加上的。

4. 运气好的话现在在Application Servers面板就可以启服务打开页面了。运气不好就是没配好IDEA,重新配。

5. do方法内可以通过 HttpServletRequest#getWriter 方法获取一个 PrintWriter 对象,用这个对象向页面输出内容。

6. do方法可以用两种方式返回一个jsp页面。

  1. 使用重定向方式。

response.sendRedirect("/views/xxx.jsp") //views是一个文件夹,放到web文件夹里面就行。

这种方式浏览器的地址栏url会变的,不好看(个人感觉)。

重定向通过session向jsp传递数据。

        HttpSession session = req.getSession();
        String queryString = req.getQueryString();
        System.out.println(queryString);
        session.setAttribute("message", queryString);
        resp.sendRedirect("/views/xxx.jsp"); 

jsp页面使用 <% out.println(session.getAttribute("message"));%> 获取并打印session全局对象里的值。

 2. forward方式

forward方式浏览器地址栏不会改变

可以使用session,req.setAttribute 传值。

        RequestDispatcher dispatcher = req.getRequestDispatcher("/views/login2.jsp");
        req.setAttribute("message", "duanyu hello");
        dispatcher.forward(req, resp);    

jsp页面使用 <% out.println(request.getAttribute("message"));%> 获取并打印request全局对象里的值。

上一篇:javaWeb_Servlet_Servlet基础_Servlet概述以及HelloWorld


下一篇:创建一个springboot工程最小化代码(json-lib的引入gradle方式)