servlet初体验

在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集合

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值