传统java web工程简介

记录一下java web工程的熟悉过程.

工程结构

首先从工程结构,应用分层开始.

一个好的工程可以最大程度复用已有代码.从而保证效率.这也是一个好的工程结构需要做到的事情.

经典的工程结构如下图所示, 分为5层, 每层处理不同业务逻辑. 通常下层代码不能调用上层代码. 通过manager的组合封装 可以更好地复用代码.

具体细节可以在中看到[阿里java开发手册]

(https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%EF%BC%88%E8%AF%A6%E5%B0%BD%E7%89%88%EF%BC%89.pdf)

web.xml 文件作用

在最初的java web 工程中, 使用web.xml作为项目的配置文件, 用来配置Filter,Listener,Servlet等.

web容器的加载顺序ServletContext -> context-param -> listener -> filter -> servlet。

其中值得注意的点是:

  1. servlet配置中通过 来控制servlet启动顺序.
  2. 不同开发/部署环境可以通过jar包外web.xml对配置属性进行覆盖.避免重复修改. 当然机器多了web.xml修改也是一件非常头痛的问题.这也是我理解的为什么需要对他进行优化的原因之一.

具体细节可以参考这篇博文这里就不细讲了 https://www.jianshu.com/p/285ad45f60d1

但是由于种种原因web.xml并不是非常理想的项目配置方式. 例如随着项目扩大而变得巨大的特性等等.

,随着servlet3.0规范, 通过注解, 取代了web.xml中对servlet, filter等的配置. 再到后来springboot利用注解完全不再需要web.xml进行配置.

当然,在只使用的情况下我们并不需要知道具体细节.

代码细节

Servlet层(请求及响应)

servlet层负责解析请求, 并将请求结果返回到client端. 在不使用任何框架情况下. 使用javax.servlet中的类来进行解析请求. 将协定好的字符串(通常是json)写入到ServletOutputStream中返回到请求端.

public class XXServlet extends HttpServlet{
    public static final ObjectMapper OBJ_MAPPER = new ObjectMapper();
    static {
        OBJ_MAPPER.configure(Feature.ALLOW_SINGLE_QUOTES, true);
        OBJ_MAPPER.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
    }
    // 使用xml中的参数初始化servlet
    @Override
    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
    }
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        request.setCharacterEncoding(DEF_CHARSET);
        String xx = request.getParameter("xx");
        xx= new String(xx.getBytes("ISO-8859-1"),"utf-8");
        Result result = new result();
        String json = OBJ_MAPPER.writeValueAsString(result);
        writeResponse(response, json);
    }
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    ....same as doGet;
    }
    private void writeResponse(HttpServletResponse response, String str)
        throws IOException {
        response.setContentType("text/json; charset=utf-8");
        ServletOutputStream os = response.getOutputStream();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,
            DEF_CHARSET));
        bw.write(str);
        bw.close();
    }
}

Service, Manager层

这里通常是java业务代码. 值得注意的是tomcat等服务器会自动启用多线程调用servlet类.因此Service, manager, dao层通常都采用单例的写法, 以保证线程安全.

Dao层

以mysql为例. 采用jdbc连接池的方式进行连接.具体细节也不展开说了.

使用时可能会存在的一些问题(不止是数据库, 也可能是其他数据源).

  1. try catch后结果没有clear. 导致数据出问题.
  2. getConnection后没有关闭导致线程超时.

接下来会简要介绍一下springboot 的使用.

原文地址:https://www.cnblogs.com/wuchengze/p/10427715.html

时间: 2024-10-10 10:35:20

传统java web工程简介的相关文章

java web工程的错误页面的简单配置

jsp页面,本身服务器也会将该页面翻译成一个servlet页面,所以请求该页面就会有可能出现错误的情况,就会出现下面类似的页面 这样给客户看到并不友好. 1.jsp页面<%@ page %>指令中的errorPage属性 此时可以在jsp页面中的<%@ page %>指令中配置errorPage属性,当访问此页面发生错误是,就会跳转到配置好的友好页面 <%@ page language="java" import="java.util.*&quo

于Heroku平台部署maven webapp(java web)工程

眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者pom.xml档,增加下面的配置为例, <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.o

Eclipse 创建Java Web工程发布并运行

设置Web服务器 添加Web服务器 启动Web服务器 创建Web工程 建立JSP文件供测试 发布Java Web工程 运行Java Web工程

Tomcat设置默认启动项目及Java Web工程设置默认启动页面

Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下: 1.打开tomcat的安装根目录,找到Tomcat 6.0\conf\server.xml,打开该文件,找到<Host>节点,在该节点中添加<Context path="" docBase="../webapps/WebTest" debug="0" reloadable=&

关于Java Web工程中web.xml文件

提及Java Web工程中web.xml文件无人不知,无人不识,呵呵呵:系统首页.servlet.filter.listener和设置session过期时限,张口就来,可是你见过该文件中的error-page标签吗?下面直接以例子的形式说明error-page标签的使用: 一个servlet文件: package com.ghj.packageofservlet; import java.io.IOException; import javax.servlet.ServletException;

使用 maven 创建 java web 工程

本文主要讲述使用 maven 命令行的形式来创建  java web 工程 开发环境 jdk 1.7 maven 3.5.0 spring 3.2 tomcat 7 eclipse Mars Release (4.5.0) 1.  maven 来构建 java web 骨架 mvn archetype:generate -DgroupId=com.reycg -DartifactId=MVC-HelloWorld -DarchetypeArtifactId=maven-archetype-web

Eclipse创建java web工程配置Tomato和JDK

在学习AJAX过程中,还用Intellij就有点老旧了,这是后装个Eclipse时,发现这个配置也很头疼,现在就叫你如何创建一个web工程,同时叫你配置Eclipse. 一.创建一个web工程 1.打开"File"-"New"-选择Dynamic web Project 单击下一步. 2.出现工程设定窗口中,设定工程的名字(对应工程的名字)和Dynamic web module version(版本),我们用的是最新的版本,tomacat8对应的是3.1,tomac

JNDI在JAVA WEB工程中的配置

第一步:配置WEB工程的WEB.XML <resource-ref>   <description>DB Connection</description> <res-ref-name>TEST_DATASOURCE</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </

用eclipse创建java web工程

1.      创建一个web工程,此处用eclipse创建(如果对创建web工程很熟悉,可以不看的,本文目的是做一个记录) 1)     打开新建工程对话框,选择Dynamic web Project并点击下一步,如图: 2)在出现的工程设定窗口中,设定工程的名字和Dynamic web module version(对应的servlet版本,不同的Dynamic web module version对应生成的工程web.xml不一样.web组件版本是不下兼容.tomcat6一般对应着2.4或