自写代码 | 整合第三发现成代码 |
---|---|
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表单提交时自动拼接请求报文 |
- web_maven工程
- maven项目构建
- 接口规范
- http协议
- web服务器(servlet容器)
- html界面
- ftp远程上传到服务器
- ftp程序上传测试环境
- security远程终端
- 测试环境换包
- 测试环境查看日志
建工程
web_project——>suportMaven——>generate web.xml——>standard Maven Project
使用maven管理依赖包
javax.servlet
javax.servlet-api
3.0.1
provided
三、接口规范
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地址
webWl
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
login
com.guoyasoft.Login
login
/login
login
/vip_login
将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)
MyHtml.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
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应用
添加数据库依赖
ojdbc
ojdbc
14
弄清楚用到的表并写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
webWl
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
login
com.guoyasoft.Login
login
/login
login
/loginVIP
测试:
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 | |
---|---|---|
接发文件 | ok | ok |
查看对方目录结果 | 不行 | ok |
在对方的文件系统里面增删改查 | 不行 | ok |
非文件的操控 | 不行 | 不行 |
secureFX
远程登录服务器,执行命令(远程桌面)
windows远程桌面
linux远程终端
直接显示远程主机的界面(linux跟cmd很像,只有命令行,windows是远程桌面)
securityCRT
换包要用到的命令
以列表和非列表的方式展现
进入到webapps、bin、logs文件
ls:查看目录,以行的模式展现
ls -l:以列的方式展现
ls -a:查看所有文件
ls -al或者ls -la或者ls -a -l隐藏文件和非隐藏文件
windows:右键——>隐藏,查看隐藏文件:组织——>文件夹和管理——>查看——>显示隐藏文件
linux:以“.”开头就是隐藏文件;查看隐藏文件:ls -a区分文件和文件夹
第一种:粗体是文件夹,正常的是文件
第二种:ls -l查看,d开头是文件夹,-开头的是文件
.:当前文件件
..:上级文件夹
~:登录的用户根目录(cd什么目录都不加,也是回到用户根目录)
/:整个主机的根目录,类似c:\
路径
- 第一种:pwd,查看当前绝对路径
- 第二种:命令提示符前面那一串(需要通过环境变量配格式)
环境变量和命令提示符
- 光标和光标签的提示信息
- 环境变量配置提示符
## 配置文件
用户根目录,也就是登录进去的那个目录
.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
日志查看方式
- 自动刷新日志
- 可以敲空行,便于查看