1. Java Web 实习笔记(一)
2.Java Web 实习笔记(二)
3.Java Web 实习笔记(三)
4.Java Web 实习笔记(四)
新建一个项目,创建一个新的servlet(SecondServlet,不要直接叫servlet)配置好web.xml,部署到Tomcat服务器上,通过浏览器访问到该servlet
①浏览器:服务器发送请求时
②请求行:请求浏览器以及地址信息
③消息头:以一种name-value的形式存在的数据
④实体内容:实体参数
①服务器:服浏览器发送请求时
②状态行:信息提示码-状态码
③消息头
④实体内容
①请求(HttpServletRequest)
②接受(HttpServletReseponse)
package web;
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;
import javax.xml.ws.Response;
/**
* @author HMM
* 所有自定义的servlet 都是servlet接口的实现类
*
*/
public class FirstServlet extends HttpServlet{
//重写service方法
/*
* 此方法中有两个参数
* HttpServletRequest 请求 请求数据报数据
* HttpServletResponse 响应 响应数据报的数据
* */
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("这是一个servlet,已经接收到前端的请求");
//当前访问此servlet的网址 http://localhost:8080/day01/firstServlet
String uri=request.getRequestURI();
System.out.println(uri);
//设置响应的编码格式,一定要在输出流之前,不然会乱码
response.setContentType("text/html;charset=UTF-8");
//做出响应 得到响应对象的网络输出流
PrintWriter out =response.getWriter();
out.println("你好啊");
}
}
登录
注:如果是get方法
package web;
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;
public class LoginServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//得到请求参数
String code=request.getParameter("code");
String pwd=request.getParameter("pwd");
//设置请求的编码格式,一定要在输出流之前,不然会乱码
response.setContentType("text/html;charset=UTF-8");
//做出相应,得到响应对象的网络输出流
PrintWriter out=response.getWriter();
if(code.equals("hmm")&&pwd.equals("123")) {
out.println("COME ON BABY!!");
}else {
out.println("啊哦...");
}
}
}
day01
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
first
web.FirstServlet
first
/firstServlet
login
web.LoginServlet
login
/login
①java小脚本
②java表达式
③标签
①jsp的标签 page include taglib
②el表达式:简化了java表达式
③jstl标签:简化了java代码
(1)Servlet的页面表示形式,本质上是一个java代码(Servlet),jsp在架子啊时会先转换为java代码,再编译运行
WEB-INF下的文件只能通过服务器访问(转发)
服务器立刻发出一个响应给浏览器,发出的是一个302状态码和一个消息头(location=url)
(1)重定向的地址必须是浏览器能访问到地址,不能是WEB-INF下的,但是可以是相同服务器的其他网址或者其他服务器地址(重定向的地址实际上就是)
同一个服务器内部进行的,将未完成的请求转交给下一个组件(web组件:Server,Filter,...)继续处理
(1)重定向实际是浏览器进行了2次请求,转发只是一次请求
(2)地址栏的地址,重定向是改变的,但是转发没有改变
(3)重定向的地址(看上面),转发的地址只能是当前服务器地址(因为转发是在服务器内部进行的)
(1)数据库中的一张表对应Java中的一个实体类
(2)数据库中的一个字段名对应一个实体类中的成员变量
(3)数据库中的表数据,一条数据对应一个实体类对象
(1)重写toString方法
(2)添加无参和有参构造
(3)重写equals和hashCode方法
(4)实现序列化接口并生成唯一标识
package com.hmm.entity;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = -1413125173463696530L;
private Integer userId;
private String userName;
private String userPassword;
//无参构造
public User() {
super();
// TODO Auto-generated constructor stub
}
//有参构造
public User(Integer userId, String userName, String userPassword) {
super();
this.userId = userId;
this.userName = userName;
this.userPassword = userPassword;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((userId == null) ? 0 : userId.hashCode());
result = prime * result + ((userName == null) ? 0 : userName.hashCode());
result = prime * result + ((userPassword == null) ? 0 : userPassword.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (userId == null) {
if (other.userId != null)
return false;
} else if (!userId.equals(other.userId))
return false;
if (userName == null) {
if (other.userName != null)
return false;
} else if (!userName.equals(other.userName))
return false;
if (userPassword == null) {
if (other.userPassword != null)
return false;
} else if (!userPassword.equals(other.userPassword))
return false;
return true;
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName + ", userPassword=" + userPassword + "]";
}
}
package com.hmm.util;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBUtils {
private static DataSource dataSource;
static {
try {
InputStream is = DBUtils.class.getClassLoader()
.getResourceAsStream("db.properties");
Properties p = new Properties();
p.load(is);
dataSource = BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return getDataSource().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static DataSource getDataSource() {
return dataSource;
}
public static void closeConnection(Connection conn){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/hmm7
username=root
password=123456
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
connectionProperties=useUnicode\=true;characterEncoding\=utf8
jar包1下载地址:https://download.csdn.net/download/mogot7/10474753
package com.hmm.test;
import org.junit.Test;
import com.hmm.util.DBUtils;
public class TestJdbc {
@Test
public void test01() {
System.out.println(DBUtils.getConnection());
}
}
测试成功