1、Socket访问web资源
加权限、写异常 流的读写
2、怎么建一个Servlet
web.xml
jsp页面更改不需要重新发布
java bean更改需要重新发布
3、Servlet中doget dopost
区分两种访问方式
获得参数
向客户端输入信息
工程名 服务器端对应的uri 本地客户端向服务器发送的内容
http://localhost:8080/FristWebP/myServlet?name=aa&pwd=123
服务器端:
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
publicclass MyServlet extends HttpServlet {
//销毁
publicvoid destroy() {
super.destroy(); // Justputs "destroy" string in log
// Put your code here
}
//request 表示客户端的请求
//response 表示服务端的响应
publicvoid doGet(HttpServletRequest request, HttpServletResponseresponse)
throws ServletException, IOException {
// doPost(request, response);
response.setContentType("text/html");
//获得从客户端传过来的参数
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
//从服务器端获得字符流
PrintWriter out = response.getWriter();
out.println("HelloWorld");
out.println(name+" "+pwd);
out.flush();
out.close();
}
publicvoid doPost(HttpServletRequest request, HttpServletResponseresponse)
throws ServletException, IOException {
// doGet(request, response);
response.setContentType("text/html");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
//从服务器端获得字符流
PrintWriter out = response.getWriter();
out.println("WorldHello");
out.println(name+" "+pwd);
out.flush();
out.close();
}
//初始化方法
publicvoid init() throws ServletException {
System.out.println("init()");
}
}
客户端:
package com.example.androidwebjsp;
importjava.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
importandroid.app.Activity;
import android.os.Bundle;
importandroid.os.StrictMode;
import android.util.Log;
classMainActivity extends Activity implementsRunnable{
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String strVer = android.os.Build.VERSION.RELEASE;
System.out.println(strVer);
strVer = strVer.substring(0, 3).trim();
float fv= Float.valueOf(strVer);
if(fv > 2.3) {
StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork() // 这里可以替换为 detectAll() // 就包括了磁盘读写和网络I/O
.penaltyLog() //打印logcat,当然也可以定位到dropbox,通过文件保存相应的 log
.build());
StrictMode.setVmPolicy(newStrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测 SQLite数据库操作
.penaltyLog() // 打印 logcat
.penaltyDeath().build());
}
newThread(this).start();
}
@Override
publicvoidrun() {
try {
Log.i("content", "content1");
Sockets = new Socket("192.168.1.114",8080);//服务器端地址 、 端口号
Stringstr = "POST /FristWebP/myServlet HTTP/1.1\n";//对应的服务器端
str+="Content-Length: 20\n"; //字符串长度
str+="Content-Type:application/x-www-form-urlencoded\n";
str+= "Host: 192.168.1.114:8080\n\n";
str+="name=fffs&pwd=123255";
OutputStreamout = s.getOutputStream();
PrintWriterps = new PrintWriter(out);
ps.println(str);//向服务器端发送name=fffs&pwd=123255
ps.flush();
Log.i("content", "content");
InputStreamin = s.getInputStream();//利用Socket对象接收服务器端发送的内容
BufferedReaderbr = new BufferedReader(newInputStreamReader(in));
Stringcontent = null;
while((content= br.readLine()) != null){
Log.i("content",content);
}
}catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Request 客户端请求
Response 服务器响应
Socket 访问Web资源
注意:加权限写异常
怎么建一个Servlet
Web.xml
连接数据库:
1、建一个java或android项目
2、在类中注册驱动:
Class.forName (“com.mysql.jdbc.Driver”);
导包:1、newàfolderàlib
2、将mysql包复制到lib中
3、获得连接
//表名/表的内容
String uri = “jdbc:mysql:/localhost:8088/my?name=aa&pwd=123”;
Connection con =DriverManager.getConnection(uri,”root”,”123456”);
package com.sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
publicclass Conn{
publicstaticvoid main(String[] args) {
//注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection conn = null;
try {
//获得连接
String url = "jdbc:mysql://localhost/my?useUnicode=true&characterEncoding=utf-8";
conn = DriverManager.getConnection(url, "root", "123456");
//创建执行SQL的语句(Statement)
Statement statement =conn.createStatement();
//处理执行结果(ResultSet)
// ResultSet result =statement.executeQuery("select * from tom");
// while(result.next()){
// System.out.println(result.getInt("id"));
// System.out.println(result.getString("name"));
// }
boolean result =statement.execute("insert intotom(name) values('ddd')");
System.out.println(result);
} catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//释放资源
try {
conn.close();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
有关properties的操作:
packagecom.sql;
importjava.io.IOException;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.util.Properties;
publicclass DBUtil {
public DBUtil(){
}
public void closeConn(Connection conn){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
}
public Connection getConnection() throwsSQLException{
Properties prop = newProperties();
String driver = null;
String url = null;
String username = null;
String password = null;
try {
prop.load(this.getClass().getClassLoader().getResourceAsStream("com/sql/DBConfig.properties"));
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
driver =prop.getProperty("driver");
url =prop.getProperty("url");
username =prop.getProperty("username");
password = prop.getProperty("password");
System.out.println(driver+" "+url);
try {
Class.forName(driver);
} catch(ClassNotFoundException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
return DriverManager.getConnection(url,username, password);
}
}
packagecom.sql;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclass SqlConn {
public static void main(String[] args) {
DBUtil db = new DBUtil();
Connection conn = null;
try {
conn = db.getConnection();
Statement dy =conn.createStatement();//创建执行sql的语句 该对象可以对数据库进行操作
ResultSet r =dy.executeQuery("select * from tom");
while(r.next()){
System.out.println(r.getInt("id"));
System.out.println(r.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
db.closeConn(conn);
}
}