“if (user != null) { if (userCheck != null) { //登录成功 session.setAttribute("userCheck", userCheck); mv.setViewName("main.jsp"); //如果需要记住密码,则往外写cookie if ("true".equals(isRemPwd)) { Cookie loginAct1 = new Cookie("account_id", userCheck.getAccount_id()); loginAct1.setMaxAge(60 * 60 * 24 * 10); response.addCookie(loginAct1); Cookie loginPwd1 = new Cookie("apassword", userCheck.getapassword()); loginPwd1.setMaxAge(60 * 60 * 24 * 10); response.addCookie(loginPwd1); } else { //把没有过期的cookie删除 Cookie c1 = new Cookie("account_id", "1"); c1.setMaxAge(0); response.addCookie(c1); Cookie c2 = new Cookie("apassword", "2"); c2.setMaxAge(0); response.addCookie(c2); } }else { //登陆失败 mv.addObject("error", "用户名或密码错误!!!"); mv.setViewName("login.jsp"); } }”的代码解释
时间: 2024-02-14 21:32:37 浏览: 17
这段代码是 Java 语言的代码,主要是对用户登录进行处理的。首先,判断用户对象是否为空。如果不为空,则继续判断用户验证对象是否为空。如果不为空,则表示登录成功,将用户验证对象存储到 session 中,并设置视图名称为 main.jsp。如果需要记住密码,则将账号和密码写入 cookie 中,并设置过期时间为10天。否则,将账号和密码的 cookie 删除。如果用户验证对象为空,则表示登录失败,将错误信息存储到 ModelAndView 对象中,并设置视图名称为 login.jsp。
相关问题
基于SSM框架 JSP Controller Intercepter拦截器session flag(public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { boolean flag = false; // HttpSession session = request.getSession(); User user = (User)session.getAttribute("userCheck"); if(null == user){ // session.setAttribute("message", "修改成功!!"); // response.sendRedirect(request.getContextPath()+"/login.jsp"); }else{ flag = true; } return flag; }) ServiceImpl Service Mapper Mapper.xml JSP用户登录流程“登录需要通过系统输入工号和密码,接着进行信息是否符合验证以及权限信息验证。若是验证成功后,将用户信息存放进新创建的session,然后跳转到系统首页。若是登录的用户权限不同,进入系统后菜单界面所拥有的功能也会不同。”的代码描述
这段代码是一个拦截器的实现,用于在用户访问某个Controller方法前进行权限验证。在preHandle方法中,首先获取当前请求的Session,并从Session中获取名为"userCheck"的属性,该属性表示当前用户是否已经登录。如果"userCheck"属性为null,说明用户未登录,将Session中的"message"属性设置为"修改成功!",然后重定向到登录页面。如果"userCheck"属性不为null,说明用户已经登录,将flag设置为true,表示该请求可以继续处理。拦截器的配置需要在Spring MVC配置文件中进行,具体实现可以参考SSM框架的官方文档。此外,还需要在Service层实现具体的业务逻辑,比如用户登录时需要进行信息验证和权限验证,可以在ServiceImpl中实现。Mapper和Mapper.xml则用于数据访问层,用于访问数据库中的用户信息。最后,JSP页面中需要实现用户登录的流程,包括输入工号和密码,以及提交表单进行信息验证等。根据验证结果,将用户信息存放到Session中,然后跳转到系统首页。在系统首页中,根据用户的权限信息,动态生成菜单界面,展示不同的功能模块。
/ISAPI/SDT/pictureUpload java示例
以下是一个简单的 Java 示例代码,用于上传图片到海康威视的设备中:
```java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
public class PictureUploadDemo {
public static void main(String[] args) {
String ip = "192.168.1.100"; // 设备的 IP 地址
String username = "admin"; // 登录用户名
String password = "123456"; // 登录密码
String picturePath = "C:\\pictures\\test.jpg"; // 待上传的图片路径
String requestUrl = "http://" + ip + "/ISAPI/SDT/pictureUpload"; // 图片上传接口地址
try {
// 登录获取 cookie,用于后续请求的认证
String cookie = login(ip, username, password);
// 上传图片
String result = uploadPicture(requestUrl, picturePath, cookie);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 登录设备,获取 cookie
*/
public static String login(String ip, String username, String password) throws IOException {
String requestUrl = "http://" + ip + "/ISAPI/Security/userCheck";
HttpURLConnection conn = (HttpURLConnection) new URL(requestUrl).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/xml");
// 构造登录请求的 XML 数据
String xmlData = String.format("<UserCheck><userName>%s</userName><password>%s</password></UserCheck>", username, password);
// 发送登录请求
OutputStream out = conn.getOutputStream();
out.write(xmlData.getBytes());
out.flush();
out.close();
// 获取 cookie
String cookie = conn.getHeaderField("Set-Cookie");
conn.disconnect();
return cookie;
}
/**
* 上传图片
*/
public static String uploadPicture(String requestUrl, String picturePath, String cookie) throws IOException {
HttpURLConnection conn = (HttpURLConnection) new URL(requestUrl).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + UUID.randomUUID().toString());
conn.setRequestProperty("Cookie", cookie);
// 构造 multipart/form-data 请求体
OutputStream out = conn.getOutputStream();
PrintWriter writer = new PrintWriter(out);
// 第一个部分,图片文件
File pictureFile = new File(picturePath);
writer.printf("--%s\r\n", UUID.randomUUID().toString());
writer.printf("Content-Disposition: form-data; name=\"file\"; filename=\"%s\"\r\n", pictureFile.getName());
writer.printf("Content-Type: image/jpeg\r\n\r\n");
writer.flush();
InputStream pictureIn = PictureUploadDemo.class.getResourceAsStream(picturePath);
byte[] buffer = new byte[1024];
int len;
while ((len = pictureIn.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
pictureIn.close();
writer.printf("\r\n--%s--\r\n", UUID.randomUUID().toString());
writer.flush();
// 发送请求并获取响应
out.flush();
out.close();
int responseCode = conn.getResponseCode();
InputStream in;
if (responseCode >= 200 && responseCode < 300) {
in = conn.getInputStream();
} else {
in = conn.getErrorStream();
}
buffer = new byte[1024];
StringBuilder response = new StringBuilder();
while ((len = in.read(buffer)) != -1) {
response.append(new String(buffer, 0, len));
}
in.close();
conn.disconnect();
return response.toString();
}
}
```
在这个示例代码中,我们通过 `login` 方法登录设备,并获取到了认证用的 cookie。然后,在 `uploadPicture` 方法中,我们构造了一个 `multipart/form-data` 的 POST 请求,将待上传的图片文件作为其中的一个部分。最后,我们发送请求并获取响应,将响应的内容作为方法的返回值。
注意,这个代码中的 `picturePath` 是指图片文件在本地的路径,如果你要上传的图片文件不在本地文件系统中,你需要对代码进行相应的修改。