@ControllerAdvice
public class CommonExceptionHandler {
@ExceptionHandler(ZcException.class)
public ResponseEntity handleException(ZcException e){
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ExceptionResult(e.getExceptionEnums()));
}
}
@AllArgsConstructor
public enum ExceptionEnums {
UNIMPLEMENTED(1, "Not yet implemented."),
UNEXPECTED(2, "Unexpected error."),
REGISTER_FAILED(3, "Register failed."),
FORMAT_CORRUPTED(4, "Format corrupted."),
NOT_FOUND(5, "Not found."),
INCORRECT_STATE(6, "Incorrect state."),
RESTRICTED(7, "Operation is not allowed."),
CANCELLED(8, "Operation has been cancelled."),
NOTALLOWED(9, "not allowed."),
CONFLICT(10, "Conflicts detected."),
UNSUPPORTED(11, "Operation is not supported."),
NOT_LOGGED_IN(12, "Not logged in."),
UNDEFINED(Integer.MAX_VALUE, "Undefined error.");
@Getter private int errorCode;
@Getter private String error;
}
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class ZcException extends RuntimeException {
private ExceptionEnums exceptionEnums;
}
@Data
public class ExceptionResult {
private int errorCode;
private String error;
public ExceptionResult(ExceptionEnums em){
this.errorCode = em.getErrorCode();
this.error = em.getError();
}
}
Controller代码
@RestController
@RequestMapping(CAR_ZC)
public class EMController {
/**
* 用户登录
* @param request
* @param servletRequest
* @return
*/
@RequestMapping(value = CAR_STAFF_LOGIN ,method = POST , produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity login(@RequestBody String request, ServletRequest servletRequest){
return ResponseEntity.status(200).body(loginService.login(servletRequest,request));
}
/................./
public static final String CAR_ZC = "/zccar";
public static final String CAR_STAFF_LOGIN = "/staff/login";
@Autowired
private LoginService loginService;
配置视图路径
@Configuration
public class DefaultController extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers( ViewControllerRegistry registry ) {
registry.addViewController( "/zccar" ).setViewName( "forward:/login.html" );
registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
super.addViewControllers( registry );
}
}
@Mapper
public interface UserDao {
// 用作登录查询,用户名和密码是否正确
@Select("select username,password,name from tab_user where username = #{username} and password = #{password} ")
User findNameAndPwd(@Param("username") String name, @Param("password")String pwd);
// 查询用户id
@Select("select id from tab_user where username = #{username} ")
Integer findId(@Param("username") String name);
// 注册用户增添用户数据
@Insert("insert into tab_user(username, password, name, phone) values(#{u.username}, #{u.password}, #{u.name}, #{u.phone}) ")
void insertUser(@Param("u") User user);
// 根据id查用户角色
@Select("SELECT details FROM tab_role WHERE id in ( SELECT roleId FROM tab_user_role WHERE userId = #{id}) ")
String findId_Role(@Param("id") int id);
@Insert("insert into tab_user_role(userId, roleId) values(#{id}, 3) ")
void insertUserRole(@Param("id") int id);
}
service演示,login和application
@Service
public class LoginService {
@Autowired
private UserDao userDao;
public JSONObject login(ServletRequest servletRequest, String param){
JSONObject json = Objects.requireNonNull(JSON.parseObject(param));
String username = Objects.requireNonNull(json.getString("username"));
String password = Objects.requireNonNull(json.getString("password"));
val httpRequest = (HttpServletRequest)servletRequest;
val session = httpRequest.getSession(true);
User user = userDao.findNameAndPwd(username, password);
if(user == null){
throw new ZcException(ExceptionEnums.NOT_FOUND);
}
session.setAttribute("username",user.getUsername());
// 根据查询用户所拥有的角色
Integer id = userDao.findId(user.getUsername());
String role = userDao.findId_Role(id);
return new JSONObject().fluentPut("errorCode",0).fluentPut("error",null)
.fluentPut("data",new JSONObject().fluentPut("name",user.getName()).fluentPut("role",role));
}
}
@Service
public class RecordService {
@Autowired
private RecordDao recordDao;
public void application(String request, ServletRequest servletRequest) {
val p = Objects.requireNonNull(JSON.parseObject(request));
JSONObject json = Objects.requireNonNull(p.getJSONObject("record"));
Record record = JSONObject.toJavaObject(json, Record.class);
//此处需要调用车辆管理的查询车辆状态方法
int status = recordDao.findStatus(record.getVehicleId());
if(status == 0){
throw new ZcException(ExceptionEnums.NOTALLOWED);
}
val httpRequest = (HttpServletRequest)servletRequest;
val session = httpRequest.getSession(true);
String username = (String)session.getAttribute("username");
record.setUsername(username);
String name = recordDao.findName(username);
record.setName(name);
recordDao.uInsert(record);
}
..............
发送ajax填充数据
$(document).on("click","#vehicleDisAll",function(){//获取所有数据
$("tr").remove(".doDele");
$.ajax({
type:'POST',
dataType :'JSON',
contentType: "application/json",
url:'http://localhost:10010/zccar/record/asearch',
data:JSON.stringify({
status1: 2
}),
crossDomain: true,
success:function(data){
console.log(data)
if(data.errorCode == 0){
console.log(data)
if(data.data){
var str="";
var data=data.data;//因为返回的数据格式不确定,可能有问题,调试的时候可能需要修改
for(i in data){
str+="
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多