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

 

本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值