<c:forEach items="${material}" var="ma"> //后台传回来的列表必须由foreach接收
<tr>
<td align="center">${ma.consumptivematerialname }</td> //对象值可以直接接收
<td align="center"><input type="text" style="100px;height:15px" id="resetnum" name="resetnum"/></td>
<td align="center">3</td>
<td align="center">4</td>
</tr>
</c:forEach>
-----------------------------------------------------------------------------------------------------------------------------------------------------------
<td align="center"><input type="hidden" id="consumptivematerialname" name="consumptivematerialname" value="${ma.id}"/>${ma.consumptivematerialname }</td> //<td>里面不能放value 放在input里隐藏
----------------------------------------------------------------------------------------------------------------------------------------------
jsp页面显示问题
<c:if test="${fn:length(item.desc)>50}">${fn:substring(item.desc, 0, 50)}...</c:if>
<c:if test="${fn:length(item.desc)<=50}">${item.desc}</c:if>
判断显示元素的长度是否大于50,如果大于50,则截取前50个字符,后面有… 表示。
------------------------------------------------------------------------------------------------------------------------------------------------
客户体验度良好问题
<p>
<label style="text-align: right; 80px;">联系电话:</label>
<input type="text" name="tel" id="add_tel" size="30" class="required" onblur="checktelphone();"/> //已经写好的星号标记
<span id="add_tel_span" style="display:none;"><font color="red">不能为空</font></span> //隐藏的不能为空的标记,颜色为红色
<span id="add_telnum_span" style="display:none;"><font color="red">必须为数字</font></span>
</p>
jquery判断
var tels = /^+?[1-9][0-9]*$/; //正则表达式
if(tel==''){
$("#add_tel_span").show(); //如果为空,根据ID让内容显示show()
return; //return返回 拦截ajax提交
}else
if(!tels.test(tel)){
// $("#add_tel_span").hide(); //hide()方法对应show()方法 效果同下
$("#add_tel_span").css("display","none"); //设置不能为空的样式为隐藏
$("#add_telnum_span").show(); //显示必须为数字
return;
}
----------------------------------------------------------------------------------------------------------------------------------------------
注释的作用
1、 @PathVariable: someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上,
变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。
2.@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。
3.@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。
4.@RequestParam:常用来处理简单类型的绑定, 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;
5.@RequestBody:该注解常用来处理Content-Type,它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
6.@Controller 声明controller
7.
@Autowired //controller中引用Service
private DeviceService deviceService;
8.@Service //声明Service
9.@javax.annotation.Resource //Service中引用Mapper
private DeviceMapper deviceMapper;
-----------------------------------------------------------------------------------------------------------------------------------------------------
添加与修改问题
添加与修改不同 修改时必须传id值到后台
<input type="hidden" id="id" value="${product.id }"/> //表单中设置隐藏标签 存放id值用来传递
----------------------------------------------------------------------------------------------------------------------------------------------------------
jsp页面判断问题
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.security.MessageDigest"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> //声明调用
<span style="text-align: right; float:right;font-size:12px; font-weight:bold;">上次操作时间:<fmt:formatDate value='${device.materialupdatetime }' type='date' pattern='yyyy-MM-dd HH:mm:ss'/></span> //日期格式化
<td align="center">${ma.usedQuantity}<c:if test="${ma.unit!=null and ma.usedQuantity!=0 }">(${ma.unit })</c:if></td>
//jsp页面判断 符合条件则执行其中的代码
------------------------------------------------------------------------------------------------------------------------------------------------------
Controller中使用@ResponseBody用与返回一个对象,返回return的值到前台
----------------------------------------------------------------------------------
String.trim()
trim()是去掉首尾空格
function nextday() {
var date1 = $("#todaydate").val(); //获取String类型日期
var date2=new Date(date1); //转Date类型
var date="";
date+=date2.getFullYear()+"-"+(date2.getMonth()+1)+"-"+(date2.getDate()+1); //转字符串 获取Date类型的年月日拼接字符串 月份从0开始 天数加一
window.location.href = "${ctx}/appointment/toappointment?date="
+ date;
}
----------------------------------------------------------------------------------------------------------------------------------------
多对多的关系 表结构 myhabits查询 存在中间表
例:n+1次查询 不推荐
<select id="selectUserRole" parameterType="java.lang.String" resultType="sy.model.UserRole">
SELECT //select中的id接收方法名 <id column="id" property="id" jdbcType="INTEGER" /> 关联查询表中的唯一标识
tuser_trole.ID,
tuser_trole.ROLE_ID, //parameterType 参数类型
tuser_trole.USER_ID //resultType返回值类型自己定义 resultMap返回值类型 可继承
FROM
tuser_trole
where tuser_trole.user_id=#{id,jdbcType=VARCHAR}
</select>
<resultMap type="sy.model.User" id="userResultMap" extends="BaseResultMap">
<collection property="userRoles" column="ID" javaType="list" select="selectUserRole" /> //重写resultMap 存在继承
</resultMap> property 里的参数跟model里的对应 映射到具体的属性
column跟别名一样 指定唯一标识用户信息的列
<select id="getAll" resultMap="userResultMap"> //collection 标签代表集合 使用ofType 指定映射到集合属性中pojo的类型
//association代表对象 使用javaType 映射到user的哪个属性
select ID, CREATEDATETIME, MODIFYDATETIME, NAME, PWD from tuser
</select>
这个<include refid="Base_Column_List" />refid会自动把上面的代码贴过来。
----------------------------------------------------------------------------------------------------------------------------------------------
列数相同的两个表格行自动匹配宽度
jQuery(function($) {
var tab1_width = $("#tab1 tr:first td").length;
for(i=0;i<tab1_width;i++)
{
$("#tab2 tr:first th").eq(i).width($("#tab1 tr:first td").eq(i).width());
}
});
---------------------------------------------------------------------------------------------------------------------------------------------------------
sql语句 DISTINCT 去重 下面根据卡id去重 保证出现的卡id唯一 可以查出使用卡项的数量
SELECT (SELECT COUNT(DISTINCT cardId) FROM t_customer_consumption_detail WHERE busid=3 AND (SELECT shopid FROM t_customer_consumption WHERE t_customer_consumption.id=
t_customer_consumption_detail.consumptionId)=#{shopid}
<if test="start != null" >
<![CDATA[ and t_customer_consumption_detail.createDatetime >= #{start} ]]>
</if>
<if test="end != null" >
<![CDATA[ and t_customer_consumption_detail.createDatetime <= #{end} ]]>
</if>
)opencnt
FROM t_customer_consumption_detail b
GROUP BY opencnt
-------------------------------------------------------------------------------------------------------------------------------------------------------
java Controller获取当前时间
1.Date end = new Date();
2.用于获取时间段,近半年,今年 可以直接设置
Calendar cal_1 = Calendar.getInstance();// 获取当前日期
cal_1.add(Calendar.MONTH, 0);
cal_1.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
cal_1.set(Calendar.HOUR, 0);
cal_1.set(Calendar.SECOND, 0);
cal_1.set(Calendar.MINUTE, 0);
Date start = cal_1.getTime();
//获取时间后记得转时间格式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String startString = "";
String endString = "";
if(start!=null){
startString = format.format(start);
try {
start = format.parse(startString);
} catch (ParseException e) {
e.printStackTrace();
}
}
if(end!=null){
endString = format.format(end);
try {
end = format.parse(endString);
} catch (ParseException e) {
e.printStackTrace();
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------
java后台Controller String类型的时间比较
在保证日期格式都一致的情况下,可以使用compareTo()方法:
//判断时间是否过期
Date nowDate=new Date();
String nowDatetime = sdf.format(nowDate);
int result3 = starttime.compareTo(nowDatetime);
if(result3<=0){
return "-1";
}
结果大于0,表示starttime晚于nowDatetime,等于0则相同,小于0starttime早于nowDatetime
-----------------------------------------------------------------------------------------------------------------------------------------------
mybatis一个参数是List集合 用foreach
List<Integer> busList = new ArrayList<Integer>();
String[] stringArr = serviceStr.split(";");
for (int i = 0; i < stringArr.length; i++) {
busList.add(i);
}
if (busList.get(0) == 0) {
busList = null;
}
params.put("busid", busList);
<select id="newconsumpsByParam" resultMap="BaseResultMap"
parameterType="map">
select
*
from t_customer_consumption t
where t.status=1
AND t.shopid =
#{shopid}
<if test="groupid!=null and groupid!='' and groupid!=0">
<![CDATA[ AND (select t_customer_group.id from t_customer_group where id =
(select groupid from t_customer_info where t_customer_info.id = t.customerId)) = #{groupid} ]]>
</if>
<if test="enddate!=null and enddate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) <= #{enddate}]]>
</if>
<if test="startdate!=null and startdate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) >= #{startdate}]]>
</if>
</select>
<select id="superSearchByParams" resultMap="BaseResultMap"
parameterType="map">
select
*
from t_customer_consumption t
where t.status=1
<if test="shopid!=null and shopid!='' and shopid!=0 ">
<![CDATA[ AND t.shopid = #{shopid} ]]>
</if>
<if test="customername!=null and customername!=''">
and t.customername LIKE CONCAT(CONCAT('%',
#{customername,jdbcType=VARCHAR}),'%')
</if>
<if test="orderno!=null and orderno!=''">
<![CDATA[ AND t.orderno = #{orderno} ]]>
</if>
<if test="status!=null and status!='' and status!=0 ">
<![CDATA[ AND t.statisticstatus = #{status} ]]>
</if>
<if test="waiterid!=null and waiterid!='' and waiterid!=0 ">
<![CDATA[ AND t.cashierId = #{waiterid} ]]>
</if>
<if test="enddate!=null and enddate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) <= #{enddate}]]>
</if>
<if test="startdate!=null and startdate!=''">
<![CDATA[ AND (date_format(t.createdatetime,'%Y-%m-%d')) >= #{startdate}]]>
</if>
<if test="busid!=null and busid.size()>0">
AND t.id in
(select consumptionid from t_customer_consumption_detail b where b.busid in <foreach collection="busid" item="item" index="index"
open="(" separator="," close=")">#{item}</foreach>)
</if>
</select>
-------------------------------------------------------------------------------------------------------------------------------------------------
提成规则计算 工资收税方式
//根据规则计算提成 achievement 业绩总和
public BigDecimal calculateCommission(CommissionClass c,BigDecimal achievement){
BigDecimal commission = new BigDecimal(0);
//业绩为负,提成为0
if(achievement.doubleValue()<0){
return new BigDecimal(0);
}
//升序排列的规则集合
List<CommissionRule> rules = commissionRuleMapper.findByClassId(c.getId());
for(int i=0;i<rules.size();i++){
//大于当前规则临界值
if(rules.get(i).getBreakvalue().doubleValue()<achievement.doubleValue()){
//下一级提成规则存在且大于该临界值
if((i+1)<rules.size()&&achievement.doubleValue()>rules.get(i+1).getBreakvalue().doubleValue()){
Double d = rules.get(i+1).getBreakvalue().doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
//下一级提成规则存在且小于该临界值
else if((i+1)<rules.size()&&achievement.doubleValue()<=rules.get(i+1).getBreakvalue().doubleValue()){
Double d = achievement.doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
//下一级提成规则不存在
else if((i+1)>=rules.size()){
Double d = achievement.doubleValue() - rules.get(i).getBreakvalue().doubleValue();
d = d * rules.get(i).getPercentage().doubleValue()/100;
BigDecimal b = new BigDecimal(d);
d = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留两位小数
commission = new BigDecimal(commission.doubleValue()+d);
}
}
}
return commission;
}
-----------------------------------------------------------------------------------------------------------------------------------------------
//后台返回json字符串
function select_bigprojecttypeid(obj) {
try {
var id = $(obj).val();
//var unitachievement = $(obj).parent().parent().find('.unitachievement');
var unitprice = $(obj).parent().parent().find('.unitprice');
if (id != 0) {
$.ajax({
url : '${ctx}/card/selectByBigProjecttypeId',
type : 'post',
cache : false,
async : false,
data : {
id : id
},
error : function() {
alertMsg.warn('请按照提示正确填写!');
},
success : function(data) {
var data = jQuery.parseJSON(data); //转格式 要解析的 JSON 字符串
//unitachievement.val(data.achievement);
unitprice.val(data.price);
}
});
}
} catch (e) {
console.error("我次哦,有异常了~", e);
}
}
@RequestMapping(value = { "/selectByBigProjecttypeId" }, method = RequestMethod.POST)
@ResponseBody //返回必须要的注解
public String selectByBigProjecttypeId(HttpServletRequest request,
@RequestParam(value = "id") Integer id)
throws JsonProcessingException {
Object objshopid = request.getSession().getAttribute("shopid");
Integer shopid = (Integer) objshopid;
BigProject project = null;
try {
project = itemService.findBigProjectByParams(id, shopid);
} catch (Exception ex) {
return null;
}
ObjectMapper mapper = new ObjectMapper(); //objectmapper json转对象
String json = mapper.writeValueAsString(project);
return json; //返回json字符串
}
-------------------------------------------------------------------------------------------------------------------------------------------
equals和==
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
int类型比较相等可以用== 基本数据类型只能用==
integer包装类一般不使用== 以后碰到Integer比较值是否相等需要用equals 如果integer一定要用==比较的话 数值后面加intValue()方法也可
-------------------------------------------------------------------------------------------------------------------------------------------------
mysql mybatis 返回生日提醒天数
SELECT * FROM
(SELECT DATEDIFF (current_birthady ,CURRENT_DATE()) AS diffDays,customerName FROM
(
SELECT *, STR_TO_DATE( CONCAT(YEAR( CURRENT_DATE () ) ,'-',MONTH(birthday),'-',DAY(birthday)), '%Y-%m-%d ') AS current_birthady
FROM t_customer_info
WHERE DATEDIFF(DATE_ADD(CONCAT(DATE_FORMAT(birthday,"%Y"),DATE_FORMAT(CURDATE(),"%m%d")),INTERVAL 7 DAY),birthday)
BETWEEN 0 AND 7 OR DATEDIFF(DATE_ADD(CONCAT(DATE_FORMAT(birthday,"%Y"),DATE_FORMAT(CURDATE(),"%m%d")),INTERVAL 7 DAY),birthday)>=365
) t
WHERE shopId=#{shopid}
) t ORDER BY diffDays
----------------------------------------------------------------------------------------------------------------------------------------------------
mysql 查询和时间有关
SELECT paramvalue AS LevelName, paramkey LEVEL ,
IFNULL(day60,0 ) day60,
IFNULL(day30, 0 ) day30,
IFNULL(day90,0 ) day90,
IFNULL(dayhalfyear, 0 ) dayhalfyear,
IFNULL(dayyear ,0) dayyear FROM
(SELECT paramvalue ,paramkey FROM t_sys_data_dictionary WHERE typeid =
(SELECT id FROM t_sys_data_type WHERE typecode = 'accident_grade')
) a
LEFT JOIN
(SELECT eventLevel ,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) <31 THEN 1
ELSE 0
END) day30,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) <61 THEN 1
ELSE 0
END) day60,
SUM( CASE WHEN
TIMESTAMPDIFF(DAY,happenDatetime,CURRENT_DATE()) <91 THEN 1
ELSE 0
END) day90, //返回天数 当前日期-happenDatetime小于91 即90天内
SUM( CASE WHEN
TIMESTAMPDIFF(MONTH,happenDatetime,CURRENT_DATE()) <7
THEN 1 ELSE 0
END) dayhalfyear, //返回月数 当前日期-happenDatetime小于7 即半年(六个月)内
SUM( CASE WHEN
TIMESTAMPDIFF(YEAR,happenDatetime,CURRENT_DATE()) <2 THEN
1 ELSE 0
END) dayyear
FROM t_he_research_info
GROUP BY eventLevel ) b
ON
a.paramkey = b.eventLevel
ORDER BY paramkey
-----------------------------------------------------------------------------------------------------------------------------------------------
mybatis自增主键返回
例1:<insert id="insertSelectiveWithReturnId" useGeneratedKeys="true" keyProperty="id" parameterType="com.mybatis.model.customer.CustomerPackageCard" >
insert into t_customer_package_card (id, customerId, cardName,
price, memo, status,
createdatetime, cardNo, cardTypeId,
isreapply)
values (#{id,jdbcType=INTEGER}, #{customerid,jdbcType=INTEGER}, #{cardname,jdbcType=VARCHAR},
#{price,jdbcType=DECIMAL}, #{memo,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{createdatetime,jdbcType=TIMESTAMP}, #{cardno,jdbcType=VARCHAR}, #{cardtypeid,jdbcType=INTEGER},
#{isreapply,jdbcType=INTEGER})
</insert>
例2:
<insert id="insert" parameterType="com.mybatis.model.customer.CustomerPackageCard" >
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> //order:相对于insert来说他的执行顺序
select LAST_INSERT_ID()
</selectKey>
insert into t_customer_package_card (id, customerId, cardName,
price, memo, status,
createdatetime, cardNo, cardTypeId,
isreapply)
values (#{id,jdbcType=INTEGER}, #{customerid,jdbcType=INTEGER}, #{cardname,jdbcType=VARCHAR},
#{price,jdbcType=DECIMAL}, #{memo,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},
#{createdatetime,jdbcType=TIMESTAMP}, #{cardno,jdbcType=VARCHAR}, #{cardtypeid,jdbcType=INTEGER},
#{isreapply,jdbcType=INTEGER})
</insert>
---------------------------------------------------------------------------------------------------------------------------------
form里的button触发了submit,form里没有action属性时,请求无效,也有返回值
当项目从服务器上下架时,上传的文件全部会消失!!!
@RequestMapping("/updateResearchInfo")
@ResponseBody
public String updateResearchInfo(String str, HttpServletRequest request,HttpSession session)
throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
HeResearchInfo info = mapper.readValue(str, HeResearchInfo.class);
researchService.updateResearchInfo(info);
User user =(User) session.getAttribute("user");
logService.writeLog(user,7,"修改人为差错成功");
return "ok";
}
----------------------------------------------------------------------------------------------------------------------------------------
表单序列化 data:$('#addVersion-form').serialize(),// 你的formid
获取到的是name的值
传递json串 就是str:str
传递json对象 就是把contenttype定义为json
----------------------------------------------------------------------------------------------------------------------------------------------------------------
input 文本框 只能输入数字
<td>数量:</td>
<td>
<input type="text" style="150px;" class="ipt form-control" id="quantity" onkeyup="this.value=this.value.replace(/[^d]/g,'') " onafterpaste="this.value=this.value.replace(/[^d]/g,'') "/> //正则非数字自动置为空
-----------------------------------------------------------------------------------------------------------------------------------------------
&和&&的区别
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。
</td>
--------------------------------------------------------------------------------------------------------------------------------------------
全选,反选以及返回已选复选框的个数与总数
<div class="form-group" >
<label class="col-sm-2 control-label">预备党员<span class="text-danger">*</span></label>
<div class="col-sm-10">
<input type="checkbox" name="selectall">全选<label id="appendtext">,已选择0人,共3人</label>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<input type="checkbox" name="member" value="2">1
<input type="checkbox" name="member" value="2">2
<input type="checkbox" name="member" value="2">3
</div>
</div>
js部分
$(function(){
$("input[name='selectall']").change(function(){//判断全选框的改变
var all= 0; //总数
var select = 0;//选中
var flage =$(this).is(":checked");//全选选中为true,否则为false
$("input[name='member']").each(function(){
$(this).prop("checked",flage);
all+=1;
if($(this).is(":checked")){
select+=1; //选中加1
}
});
$("#appendtext").html("");
$("#appendtext").append(",已选择"+select+"人,共"+all+"人");
});
$("input[name='member']").change(function(){//判断每一个复选框的改变
var all= 0; //总数
var select = 0;//选中
$("input[name='member']").each(function(){
all+=1;
if($(this).is(":checked")){
select+=1; //选中加1
}
});
$("#appendtext").html("");
$("#appendtext").append(",已选择"+select+"人,共"+all+"人");
});
});
-------------------------------------------------------------------------------------------------------------------------------------------
静态方法是类方法,不需要去实例化类就可以调用这个方法,静态方法内部使用的是静态变量,这些就相当于全局变量,有类就有方法。它可以不创建类的实例而被调用。
但是静态方法是要占用内存的,而且如果全都是静态方法,那么你的类也确实没什么必要了。
-----------------------------------------------------------------------------------------------------------------------------------------------
正则表达式两大类
import java.util.regex.Matcher; import java.util.regex.Pattern;
方式一:
Pattern p=Pattern.compile("\d+");
Matcher m=p.matcher("22bb23");
m.matches();//返回false,因为bb不能被d+匹配,导致整个字符串匹配未成功.
Matcher m2=p.matcher("2223");
m2.matches();//返回true,因为d+匹配到了整个字符串
方式二:调用静态方法
Pattern.matches("\d+","2223");//返回true
Pattern.matches("\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到
-----------------------------------------------------------------------------------------------------------------------
HttpServletRequest cannot be resolved to a type。
问题描述:
HttpServletRequest cannot be resolved to a type。
Multiple markers at this line
- The import javax.servlet.http cannot be resolved
- The import javax.servlet.http cannot be resolved
- The import javax.servlet.http cannot be resolved
解决方案:
1.这个错误可能是服务器自带的servlet库未导入的原因。
2.右键项目属性,转到Targeted Runtimes,选择一个服务器,例如Tomcat,单击应用,可能就可以解决。