其他分享
首页 > 其他分享> > 类型转换和格式化

类型转换和格式化

作者:互联网

类型转换的意义

1、先创建一个addGoods.jsp:
这希望的是页面收集到的数据提交到addGoods的Servlet(AddGoodsServlet类)该Servlet将这些请求信息封装成一个Goods类的值对象

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="addGoods" method="post">
	商品名称:<input type="text" name="goodsname"/><br/>
	商品价格:<input type="text" name="goodsprice"/><br/>
	商品数量:<input type="text" name="goosnumber"/><br/>
	<input type="submit" value="提交"/>
	</form>
</body>
</html>

2、创建一个Goods实体类:

private String goodsname;
	private double goodsprice;
	private int goodsnumber;
	//重写toString和构造方法

3、在Servlet包中创建一个Servlet:
注:可以直接右键包新建一个Servlet,这将会直接继承HttpServlet抽象类,不用自己手写抽象类的方法

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码,防止乱码
		response.setCharacterEncoding("text/html;charset=utf-8");
		//获取参数值
		String goodsname = request.getParameter("goodsname");
		String goodsprice = request.getParameter("goodsprice");
		String goodsnumber = request.getParameter("goodsnumber");
		//进行类型转换
		double newgoodsprice = Double.parseDouble(goodsprice);
		int newgoodsnumber = Integer.parseInt(goodsnumber);
		//将转换后的数据封装成goods值对象
		Goods goods = new Goods(goodsname, newgoodsprice, newgoodsnumber);
		//将goods值对象传递给数据访问层,进行添加操作
	}

11.2 Converter

11.1 Converter<S, T>

当中S表示源类型,T表示目标类型

11.2.2 自定义类型转换器

1、创建实体类

private String goodsname;
	private double goodsprice;
	private int goodsnumber;

2、创建控制器类

@Controller
@RequestMapping("/my")
public class ConverterController {
	@RequestMapping("/converter")
	public String myConverter(@RequestParam("goods") GoodsModel gm,Model model){
		model.addAttribute("goods",gm);
		return "showGoods";
	}
}

3、创建自定义类型转换器
这需要实现Converter<S, T>接口,重写convert(S)接口方法

public class GoodsConverter implements Converter<String, GoodsModel> {
	@Override
	public GoodsModel convert(String source) {
		GoodsModel goods = new GoodsModel();
		String stringValues[] = source.split(",");
		if (stringValues != null && stringValues.length == 3){
			goods.setGoodsname(stringValues[0]);
			goods.setGoodsprice(Double.parseDouble(stringValues[1]));
			goods.setGoodsnumber(Integer.parseInt(stringValues[3]));
			return goods;
		}else{
			throw new IllegalArgumentException(String.format("类型转换失败!", source));
		}
	}
}

4、注册类型转换器
在springmvc-servlet.xml配置文件中注册自定义类型转换器,代码如下:

<bean id="conversionService" class="org.springframework.context.support.ConveersionServiceFactoryBean">
	<property name="converters">
		<list>
			<bean class="converster.GoodsConverter"/>
		</list>
	</property>
</bean>
<mvc:annotation-driven conversion-service="conversionService"/>

5、创建相关视图

<form action="${pageContext.request.contextPath}/my/converter" method="post">
	<p>请输入商品信息(格式为apple,10.50,200)</p>
	<input type="text" name="goods"/><br/>
	<input type="submit" name="提交"/>
</form>

标签:类型转换,goods,格式化,String,stringValues,private,goodsname,goodsprice
来源: https://blog.csdn.net/weixin_43238731/article/details/94442330