在WEB项目中创建一个servlet类,只需要继承HttpServlet类,并且重写dopost或doget方法,在类前面加上注释@WebServlet("/url"),这个类就是servlet类。
注释指明了访问路径,及链接的地址,<a href=url>,就能跳转到servlet类执行相关的方法。
servlet装载,及把servlet加载到服务器中,有三种情况servlet会装载。
1 serlvet配置中设置servlet的优先级最高,在服务器一启动,就会默认加载到服务器端。
在serlvet标签加入<load-on-startup>n</>n越小,优先级越高
2 serlvet容器启动后,客户首次向serlvet发生请求的时候
3 serlvet类文件被更新后,重新加载
servlet类一般的执行顺序
constructor -> init ->service -> doget/dopost ->destroyed
service会根据用户的请求方法,调用相应的方法,及doget/dopost方法,也可以重写service方法,根据请求参数执行相应的方法,这个技巧可以用一个servlet处理多个请求。
serviceServlet继承HttpServlet类,service重写service方法,根据请求参数用service方法根据类反射执行相应的方法,子类继承serviceServlet类。
servlet的重定向和转发。
request.getRequestDispatcher("/query.jsp").forward(request, response)
/query.jsp的写法有很多,但无论是绝对路径还是相对路径,都必须保证上级目录是项目的根目录,否则会报错。
根目录/query.jsp
如果query.jsp上级的目录不是根目录,则要加上相应的文件目录。
response.sendRedirect(request.getContextPath()+"/index.jsp");
request.getContextPath()能取得项目的根目录,重定向能直接写在根目录下的jsp页面,但转发不行,必须要加上项目的根目录。
serlvet获取表单信息,有两种方法
request.getParameter()获取属性name的单个值
request.getParameterValues()获取属性name的多个值
request.getParameterNames() 方法是将发送请求页面中form表单里所有具有name属性的表单对象获取(包括button).返回一个Enumeration<string>类型的枚举.
Enumeration pNames=request.getParameterNames();
while(pNames.hasMoreElements()){
String name=(String)pNames.nextElement();
String value=request.getParameter(name);
}
第一种方式
获取的input类型有text, radio, select, data.
<select name="like">
<option value="english">英语</option>
<option value="math">数学</option>
</select>
<label><input type="radio" name="sex" value="man">man</label>
<label><input type="radio" name="sex" value="female">female</label>
<label><input type="date" name="birth"></label>
第二种方式
<lable><input name="select" type="checkbox" value="staff">staff</lable>
<label><input name="select" type="checkbox" value="menu">menu</label>
<label><input name="select" type="checkbox" value="zhangdan">zhandan</label>
值得注意的一点date类型获取的字符串是2019-01-02类型,要想转换成日期Date类,
要进行这种变换。
sdf=new SimpleDateFormat("yyyy-MM-dd")
Date date =sdf.parse(字符串)//字符串是从request获得
连接数据库操作。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class connet {
private static final String url = "jdbc:mysql://localhost:3306/can?
useUnicode=true&characterEncoding=utf-8&useSSL=false";
// 数据库连接字符串,test为数据库名称
private static final String username = "root";
// 数据库用户名
private static final String password = "password";
// 数据库密码,填写自己的数据库密码
private static final String driver="com.mysql.jdbc.Driver";
private static Connection con=null;
static {
try {
Class.forName(driver);
}catch(Exception ex) {
ex.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
if(con!=null) {
return con;
}
else {
con=DriverManager.getConnection(url,username,password);
return con;
}
}
}
查询数据库,获取数据库信息常规操作
String string="select * from user";
try {
Connection connection=connet.getConnection();
PreparedStatement preparedStatement=connection.prepareStatement(string);
ResultSet resultSet=preparedStatement.executeQuery();
while (resultSet.next()) {
user user1=new user();
user1.setUserno(resultSet.getString("userno"));
user1.setPassword(resultSet.getString("password"));
arrayList.add(user1);
}
if (arrayList.contains(user)) {
return user;
}
else {
return null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
将数据库的信息存入到集合中,集合一般有ArrayList, Set, HashMap
将对象存入到map中遍历的操作一般为
Set<Items>key=map.keySet();获取map键的集合
Iterator<> it=key.iterator();用迭代器遍历键的集合
while( it.hasnext() ){
object=it.next() 得到map的键
获取map的值 map.get(object)
}
输出map对象的信息,以字符串形式
Set<Map.Entry<K,V>> = map.entrySet();
map以K,V生产一条条记录存入set集合
直接打印set集合