| 自寫代碼 | 整合第三發(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表單提交時自動拼接請求報文 |
- web_maven工程
- maven項目構建
- 接口規(guī)范
- http協(xié)議
- web服務器(servlet容器)
- html界面
- ftp遠程上傳到服務器
- ftp程序上傳測試環(huán)境
- security遠程終端
- 測試環(huán)境換包
- 測試環(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包上傳到遠處服務器
- 本地啟動ftp工具
- ip(指定遠程主機)
- 端口(遠程主機的ftp程序)
- 用戶名和密碼
- 登錄后,本地和遠程互傳
| 對比項 | ftp | |
|---|---|---|
| 接發(fā)文件 | ok | ok |
| 查看對方目錄結(jié)果 | 不行 | ok |
| 在對方的文件系統(tǒng)里面增刪改查 | 不行 | ok |
| 非文件的操控 | 不行 | 不行 |
secureFX
遠程登錄服務器,執(zhí)行命令(遠程桌面)
windows遠程桌面
linux遠程終端
直接顯示遠程主機的界面(linux跟cmd很像,只有命令行,windows是遠程桌面)
securityCRT
換包要用到的命令
以列表和非列表的方式展現(xiàn)
進入到webapps、bin、logs文件
ls:查看目錄,以行的模式展現(xiàn)
ls -l:以列的方式展現(xiàn)
ls -a:查看所有文件
ls -al或者ls -la或者ls -a -l隱藏文件和非隱藏文件
windows:右鍵——>隱藏,查看隱藏文件:組織——>文件夾和管理——>查看——>顯示隱藏文件
linux:以“.”開頭就是隱藏文件;查看隱藏文件:ls -a區(qū)分文件和文件夾
第一種:粗體是文件夾,正常的是文件
第二種:ls -l查看,d開頭是文件夾,-開頭的是文件
.:當前文件件
..:上級文件夾
~:登錄的用戶根目錄(cd什么目錄都不加,也是回到用戶根目錄)
/:整個主機的根目錄,類似c:\
路徑
- 第一種:pwd,查看當前絕對路徑
- 第二種:命令提示符前面那一串(需要通過環(huán)境變量配格式)
環(huán)境變量和命令提示符
- 光標和光標簽的提示信息
- 環(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
日志查看方式
- 自動刷新日志
- 可以敲空行,便于查看