搭建Servlet的web环境

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路搭建Servlet的web环境,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

构建servlet

idea构建一个maven项目

IDEA实现Maven项目创建并连接Tomcat

在这里插入图片描述
配置tomcat后启动tomcat

在这里插入图片描述
跳转到浏览器:
在这里插入图片描述
配置好tomcat服务器后启动正常应该跳转到index.jsp页面,这里出现404说明,未配置成功。

配置工件

出现该原因是因为未配置工件,idea配置工件的作用是将web的war包放在tomcat的webapps目录下,这样才能在tomcat启动时访问到。

配置工件的步骤如下:

  1. 在File中打开Project Structure…
    在这里插入图片描述

  2. 选择web application工件,exploed表示拟部署,并不把war包放在webapps目录下但仍然可以在启动tomcat是访问web项目,aechive是部署,将war包放在webapps目录下。这里选在From Module即可。
    在这里插入图片描述

  3. 上述步骤是在idea中设置工件,还需要在项目中,应用工件设置

在这里插入图片描述
点击+按钮

在这里插入图片描述
出现下面的工件即可:

在这里插入图片描述

  1. 再次启动就会自动跳转到index.jsp页面

在这里插入图片描述

修改默认url地址

部署的工件会自动生成url的地址http://localhost:8080/spring_security_war_exploded/这样看起来不便,这也是可以更改的:

在这里插入图片描述

图中横线的部分改为自己喜欢的uri即可,改完启动tomcat会自动跳转到index.jsp。

在这里插入图片描述

生成servlet

servlet有多种,一般都使用HttpServlet,其他请移步Java开发网站的核心servlet

创建一个class类继承HttpServlet ——> extends HttpServlet——> 重写doGet和doPost方法:

public class TestController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        PrintWriter out=resp.getWriter();
        out.write("Test");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}

servlet输入流

servlet的输出流是HttpServletResponse对象的getWriter方法,用于将数据流写入到http响应体中。其返回值类型是PrintWriter类型:

在这里插入图片描述
PrintWriter继承自Writer输出流:
在这里插入图片描述
通过PrintWriter提供的方法可以将字符数据写入到响应体。

请求servlet

请求servlet的方式有两种:1、配置文件web.xml;2、@WebServlet注解

web.xml配置一个servlet

  <servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>com.example.controller.TestController</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/servlet2</url-pattern>
  </servlet-mapping>

注解配置servlet

@WebServlet("/servlet1")
public class LoginController extends HttpServlet{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        PrintWriter out=response.getWriter();
        out.write("Hello World");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}

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

servlet转发与重定向

转发

转发是返回html页面,如返回模板引擎,共用一次请求和请求参数

@WebServlet("/servlet3")
public class RedirectController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

HttpServletRequestgetRequestDispatcher方法,如果字符串有后缀,就在webapp下寻找该文件并返回,如果没有后缀,就跳转到另一个servlet中。

特点:
服务器内部跳转的特点:
1.需要使用request对象来完成
2.服务器内部跳转期间,是把请求request和响应response转发到下一个资源中,所以在整个跳转期间所有涉及到的资源使用的都是同一个request和response。
3.服务器内部跳转,不会改变浏览器地址栏中的地址。

重定向

重定向是基于HttpServletResponsesendRedirect方法,用户返回页面和servlet。如果字符串有后缀,就在webapp下寻找该文件并返回,如果没有后缀,就跳转到另一个servlet中。

@WebServlet("/servlet3")
public class RedirectController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //req.getRequestDispatcher("index.jsp").forward(req,resp);
        resp.sendRedirect("/servlet2");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

特点:

1.需要使用response对象来完成
2.每一个客户端重定向,浏览器都会发出新请求,也就意味着在服务器内部会产生新的request对象和response对象
3.客户端重定向,会改变浏览器地址栏中的地址。

总结

servlet既能返回数据由能返回页面,就可以用前后端分离或混合开发来开发web应用了,更多细节请移步Java开发网站的核心servlet

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156170.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!