自写代码 | 整合第三发现成代码 |
---|---|
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管理依赖包
<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包上传到远处服务器
- 本地启动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
日志查看方式
- 自动刷新日志
- 可以敲空行,便于查看