java實踐:web應用整體串聯(lián)

自寫代碼 整合第三發(fā)現(xiàn)成代碼
Test類的main方法 瀏覽器
socket客戶端 瀏覽器
tomcat類的http(url) tomcat服務器
url解析類 tomcat服務器
socket服務端 tomcat服務器
解析url封裝成request類 servlet包
響應數(shù)據(jù)封裝response類 servlet包
httpservlet父類 servlet包
login業(yè)務類 login業(yè)務類
web.properties web.xml
有接口規(guī)范,沒明說 有接口規(guī)范,明文規(guī)定
string或瀏覽器地址寫報文 界面填參數(shù),瀏覽器的form表單提交時自動拼接請求報文
  1. web_maven工程
  2. maven項目構建
  3. 接口規(guī)范
  4. http協(xié)議
  5. web服務器(servlet容器)
  6. html界面
  7. ftp遠程上傳到服務器
  8. ftp程序上傳測試環(huán)境
  9. security遠程終端
  10. 測試環(huán)境換包
  11. 測試環(huán)境查看日志

建工程

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>

三、接口規(guī)范

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-----------------

服務端按接口規(guī)范進行開發(fā)

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);
    }

}

客戶端按照接口規(guī)范調(diào)用

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

響應數(shù)據(jù)

resultCode=0000&resultCodeDesc=success

以界面的方式填寫請求數(shù)據(jù)(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數(shù)據(jù)都在地址欄,不安全,改成post

界面提交方式改成post

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

servlet接口實現(xiàn)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

提交跳轉(zhuǎn)地址

http://127.0.0.1:8081/webWl/login

窗口內(nèi)容

resultCode=0000&resultCodeDesc=success

四、添加數(shù)據(jù)庫

對比項 plsql java代碼
tns+用戶 tns文件 url字符串
用戶名密碼 登錄的時候填 簡歷鏈接時填
登錄客戶端 oracleClient+plsql 驅(qū)動類(oracle.jdbc.driver.OracleDriver)
建立鏈接 session 連接類Connection
寫SQL SQL窗口 sql字符串
執(zhí)行SQL 執(zhí)行按鈕 執(zhí)行類StateMent
返回值 結(jié)果窗口 結(jié)果類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

數(shù)據(jù)庫實例,就是數(shù)據(jù)庫的庫名
一個數(shù)據(jù)庫,可以有很多個實例,就是有很多個庫
一個數(shù)據(jù)庫類似一個tomcat服務器,一個實例,相當于一個web應用

添加數(shù)據(jù)庫依賴

        <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鏈接數(shù)據(jù)庫并執(zhí)行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. 建立數(shù)據(jù)庫連接
                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
接發(fā)文件 ok ok
查看對方目錄結(jié)果 不行 ok
在對方的文件系統(tǒng)里面增刪改查 不行 ok
非文件的操控 不行 不行

secureFX

遠程登錄服務器,執(zhí)行命令(遠程桌面)

windows遠程桌面

linux遠程終端

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

換包要用到的命令

以列表和非列表的方式展現(xiàn)

  1. 進入到webapps、bin、logs文件
    ls:查看目錄,以行的模式展現(xiàn)
    ls -l:以列的方式展現(xiàn)
    ls -a:查看所有文件
    ls -al或者ls -la或者ls -a -l

  2. 隱藏文件和非隱藏文件
    windows:右鍵——>隱藏,查看隱藏文件:組織——>文件夾和管理——>查看——>顯示隱藏文件
    linux:以“.”開頭就是隱藏文件;查看隱藏文件:ls -a

  3. 區(qū)分文件和文件夾
    第一種:粗體是文件夾,正常的是文件
    第二種:ls -l查看,d開頭是文件夾,-開頭的是文件

.:當前文件件
..:上級文件夾
~:登錄的用戶根目錄(cd什么目錄都不加,也是回到用戶根目錄)
/:整個主機的根目錄,類似c:\

路徑

  1. 第一種:pwd,查看當前絕對路徑
  2. 第二種:命令提示符前面那一串(需要通過環(huán)境變量配格式)

環(huán)境變量和命令提示符

  1. 光標和光標簽的提示信息
  2. 環(huán)境變量配置提示符
## 配置文件
用戶根目錄,也就是登錄進去的那個目錄
.bash_profile

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

增刪改查

類型 命令 文件 文件夾 示例
刪除 rm rm 文件名 rm -rf 文件夾名

可執(zhí)行文件

操作系統(tǒng) 文件后綴
windwos .exe、.bat
linux .sh

啟動tomcat:

./shutdown.sh
./startup.sh

查看日志

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

## 查看日志

只看后面(只看最新內(nèi)容)

tail -200f catalina.out

日志查看方式

  1. 自動刷新日志
  2. 可以敲空行,便于查看
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容