美文网首页
java实践:web应用整体串联

java实践:web应用整体串联

作者: 果芽软件 | 来源:发表于2017-12-11 11:07 被阅读257次
自写代码 整合第三发现成代码
Test类的main方法 浏览器
socket客户端 浏览器
tomcat类的http(url) tomcat服务器
url解析类 tomcat服务器
socket服务端 tomcat服务器
解析url封装成request类 servlet包
响应数据封装response类 servlet包
httpservlet父类 servlet包
login业务类 login业务类
web.properties web.xml
有接口规范,没明说 有接口规范,明文规定
string或浏览器地址写报文 界面填参数,浏览器的form表单提交时自动拼接请求报文
  1. web_maven工程
  2. maven项目构建
  3. 接口规范
  4. http协议
  5. web服务器(servlet容器)
  6. html界面
  7. ftp远程上传到服务器
  8. ftp程序上传测试环境
  9. security远程终端
  10. 测试环境换包
  11. 测试环境查看日志

建工程

web_project——>suportMaven——>generate web.xml——>standard Maven Project

使用maven管理依赖包

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>

三、接口规范

login登录接口

请求报文

字段名 字段描述 字段长度 约束 备注
name 姓名 V20 1
password 密码 V8 1
role 角色 V10 1 student和teacher

响应报文

字段名 字段描述 字段长度 约束 备注
resultCode 响应码 F4 1
resultCodeDesc 响应描述 v100 ?

新建login接口类

package com.guoyasoft;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("------------login doGet-----------------");
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("-------------login doGet-----------------");
        super.doPost(req, resp);
    }

}

web.xml把类映射到url地址

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>webWl</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.guoyasoft.Login</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/vip_login</url-pattern>
    </servlet-mapping>
</web-app>

将web工程部署到tomcat并启动

浏览器测试

http://127.0.0.1:8081/webWl/login
信息: Starting ProtocolHandler ["http-apr-8081"]
十二月 11, 2017 10:39:42 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
十二月 11, 2017 10:39:42 上午 org.apache.catalina.startup.Catalina start
信息: Server startup in 3171 ms
------------login doGet-----------------

服务端按接口规范进行开发

package com.guoyasoft;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name=req.getParameter("name");
        String age=req.getParameter("age");
        String role=req.getParameter("role");
        System.out.println("------------login doGet-----------------");
        System.out.println(name+","+age+","+role);
        
        String result="resultCode=0000&resultCodeDesc=success";
        resp.getWriter().write(result);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("-------------login doGet-----------------");
        super.doPost(req, resp);
    }

}

客户端按照接口规范调用

http://127.0.0.1:8081/webWl/login?name=guoyasoft&age=1&role=teacher

响应数据

resultCode=0000&resultCodeDesc=success

以界面的方式填写请求数据(get)

<!DOCTYPE html>
<html>
  <head>
    <title>MyHtml.html</title>
    
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
    <form name="f1" id="f1" action="login" method="get">
      <table>
        <tr>
          <td>Login:</td>
          <td><input type="text" name="login" id="login"></td>
        </tr>
        <tr>
          <td>Password:</td>
          <td><input type="password" name="password" id="password"></td>
        </tr> 
        
        <tr>
          <td>role:</td>
          <td>+
          <input type="radio" name="role" id="role" value="student">student
          <input type="radio" name="role" id="role" value="teacher">teacher
          </td>
        </tr> 
        <tr>
          <td colspan="2"><input type="submit"></td>
        </tr>
      </table>
    </form>
  </body>
</html>

界面地址:

http://127.0.0.1:8081/webWl/MyHtml.html

提交后浏览器地址:

http://127.0.0.1:8081/webWl/login?login=wuling&password=1234455&role=teacher

提交后浏览器窗口

resultCode=0000&resultCodeDesc=success

get数据都在地址栏,不安全,改成post

界面提交方式改成post

    <form name="f1" id="f1" action="login" method="get">

servlet接口实现doPost方法

package com.guoyasoft;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name=req.getParameter("name");
        String age=req.getParameter("age");
        String role=req.getParameter("role");
        System.out.println("------------login doGet-----------------");
        System.out.println(name+","+age+","+role);
        
        String result="resultCode=0000&resultCodeDesc=success";
        resp.getWriter().write(result);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name=req.getParameter("name");
        String age=req.getParameter("age");
        String role=req.getParameter("role");
        System.out.println("------------login doPost-----------------");
        System.out.println(name+","+age+","+role);
        
        String result="resultCode=0000&resultCodeDesc=success";
        resp.getWriter().write(result);
    }

}

浏览器测试效果:
界面地址

http://127.0.0.1:8081/webWl/MyHtml.html

提交跳转地址

http://127.0.0.1:8081/webWl/login

窗口内容

resultCode=0000&resultCodeDesc=success

四、添加数据库

对比项 plsql java代码
tns+用户 tns文件 url字符串
用户名密码 登录的时候填 简历链接时填
登录客户端 oracleClient+plsql 驱动类(oracle.jdbc.driver.OracleDriver)
建立链接 session 连接类Connection
写SQL SQL窗口 sql字符串
执行SQL 执行按钮 执行类StateMent
返回值 结果窗口 结果类ResultSet

tns:

aliyun_oradb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 120.132.0.117)(PORT = 1521))
   )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME= CCSDB1)
    )
)

java

jdbc:oracle:thin:@120.132.0.117:1521:CCSDB1

数据库实例,就是数据库的库名
一个数据库,可以有很多个实例,就是有很多个库
一个数据库类似一个tomcat服务器,一个实例,相当于一个web应用

添加数据库依赖

        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>14</version>
        </dependency>

弄清楚用到的表并写SQL

select * from tb_student t ;
select * from tb_teacher t ;
select t.student_id,t.student_name,t.sclass from tb_student t where t.student_id='guoyasoft' and t.password=''123456;
select t.teacher_id,t.password from tb_teacher t where t.password='12321' and t.teacher_id='asdasd';

使用jdbc链接数据库并执行SQL

package com.guoyasoft;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            {
        String name=req.getParameter("name");
        String password=req.getParameter("password");
        String role=req.getParameter("role");
        System.out.println(name+","+password+","+role);
        String result="resultCode=9999&resultCodeDesc=error";
        if(name !=null && password!=null && role !=null){
            result="resultCode=0000&resultCodeDesc=success";
            String sql="";
            //1. 写SQL
            if("student".equals(role)){
                sql="select t.student_id id,t.student_name name,t.sclass class from tb_student t where t.student_id='"+name+"' and t.password='"+password+"'";
            }else if("teacher".equals(role)){
                sql="select t.teacher_id id,t.password from tb_teacher t where t.teacher_id='"+name+"' and t.password='"+password+"'";
            }
            System.out.println(sql);
            try{

                //2. 建立数据库连接
                Class.forName("oracle.jdbc.driver.OracleDriver");
                Connection con=DriverManager.getConnection("jdbc:oracle:thin:@120.132.0.117:1521:CCSDB1","shuccs1o","q1w2e3r4t5");
                Statement st=con.createStatement();
                ResultSet rs=st.executeQuery(sql);
                while(rs.next()){
                    String id=rs.getString(1);
                    System.out.println("按照下标取:"+id);
                    id=rs.getString("ID");
                    System.out.println("按照名称取:"+id);
                }
                rs.close();
                st.close();
                con.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        try {
            resp.getWriter().write(result);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doPost(req, resp);
    }

}


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>webWl</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.guoyasoft.Login</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/loginVIP</url-pattern>
  </servlet-mapping>
</web-app>

测试:

http://127.0.0.1:8081/webWl/loginVIP?name=guoyasoft&password=123456&role=teacher

使用maven打包工程

修改pom.xml,打包方式改成war

使用maven命令打包

mavne clean package

使用ftp工具,将war包上传到远处服务器

  1. 本地启动ftp工具
  2. ip(指定远程主机)
  3. 端口(远程主机的ftp程序)
  4. 用户名和密码
  5. 登录后,本地和远程互传
对比项 qq ftp
接发文件 ok ok
查看对方目录结果 不行 ok
在对方的文件系统里面增删改查 不行 ok
非文件的操控 不行 不行

secureFX

远程登录服务器,执行命令(远程桌面)

windows远程桌面

linux远程终端

直接显示远程主机的界面(linux跟cmd很像,只有命令行,windows是远程桌面)
securityCRT

换包要用到的命令

以列表和非列表的方式展现

  1. 进入到webapps、bin、logs文件
    ls:查看目录,以行的模式展现
    ls -l:以列的方式展现
    ls -a:查看所有文件
    ls -al或者ls -la或者ls -a -l

  2. 隐藏文件和非隐藏文件
    windows:右键——>隐藏,查看隐藏文件:组织——>文件夹和管理——>查看——>显示隐藏文件
    linux:以“.”开头就是隐藏文件;查看隐藏文件:ls -a

  3. 区分文件和文件夹
    第一种:粗体是文件夹,正常的是文件
    第二种:ls -l查看,d开头是文件夹,-开头的是文件

.:当前文件件
..:上级文件夹
~:登录的用户根目录(cd什么目录都不加,也是回到用户根目录)
/:整个主机的根目录,类似c:\

路径

  1. 第一种:pwd,查看当前绝对路径
  2. 第二种:命令提示符前面那一串(需要通过环境变量配格式)

环境变量和命令提示符

  1. 光标和光标签的提示信息
  2. 环境变量配置提示符
## 配置文件
用户根目录,也就是登录进去的那个目录
.bash_profile

## 变量名PS1
export PS1="[\u \w]\$"

增删改查

类型 命令 文件 文件夹 示例
删除 rm rm 文件名 rm -rf 文件夹名

可执行文件

操作系统 文件后缀
windwos .exe、.bat
linux .sh

启动tomcat:

./shutdown.sh
./startup.sh

查看日志

## 日志路径
tomcat_home/logs/catalina.out 

## 查看日志

只看后面(只看最新内容)

tail -200f catalina.out

日志查看方式

  1. 自动刷新日志
  2. 可以敲空行,便于查看

相关文章

  • java实践:web应用整体串联

    web_maven工程 maven项目构建 接口规范 http协议 web服务器(servlet容器) html界...

  • web应用整体串联

    1、新建web_maven工程 建工程 web_project——>suportMaven——>generate ...

  • day46课堂笔记(LNMP搭建)

    第一章、LNMP Web服务搭建 1.1、JAVA Web环境(企业更多) 第二章、企业级LNMP环境应用实践 ...

  • Java Web开发入门知识

    Java Web应用运行在服务器的Web容器中,Web容器与Java Web应用的关系可类比Java虚拟机与本地J...

  • 菜鸟笔记(二) - Java邮件发送实践

    本文将介绍多种使用Java发送Email的应用实践。 前提摘要:在学习Java Web的构建中,无论是触发型的邮件...

  • IDEA 创建 web 应用程序

    新建 java web 工程 新建工程,选择java web 应用模板 设置应用名与工程存储路径 在WEB-INF...

  • Node.js 撸第一个Web应用

    使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同。使用PHP/Java 来编...

  • Part II 3.从Web应用开始(Getting Start

    Web应用 在Java EE平台中,**Web组件**为Web服务器提供动态扩充的能力。Web组件可以是Java ...

  • 介绍

    Java Web应用 定义:Java Web应用由一组Servlet、HTML页、类、以及其它可以被绑定的资源构成...

  • Servlet与Tomcat

    概念 Java Web,是基于Java语言实现web服务的技术总和。介于现在Java在web客户端应用的比较少,我...

网友评论

      本文标题:java实践:web应用整体串联

      本文链接:https://www.haomeiwen.com/subject/irxiixtx.html