private void Useredit(HttpServletRequest request, HttpServletResponse response) { String id=request.getParameter("id"); String UserName=request.getParameter("username"); String Password=request.getParameter("password"); UserServices userServices=new UserServices(); User user=new User(); user.setId(Long.parseLong(id)); user.setUserName(UserName); user.setPassword(Password); boolean succ=userServices.save(user); if (succ){ try { response.sendRedirect("list"); } catch (IOException e) { e.printStackTrace(); } } else { request.setAttribute("err","保存数据出错"); request.setAttribute("data",user); request.getRequestDispatcher("edit.jsp"); } userServices.save(user); }

时间: 2024-02-14 08:32:45 浏览: 21
这段代码是一个Java Servlet中的方法,用于处理用户编辑信息的请求。具体来说,它从HTTP请求中获取id、UserName和Password参数,创建一个User对象并设置它们的值,然后将其保存到数据库中。如果保存成功,则将用户重定向到列表页面,否则将显示一个错误消息并将用户重定向回编辑页面。 需要注意的是,这段代码中有一个错误,即在if语句外面多余地调用了一次`userServices.save(user)`方法。如果保存成功,已经在if语句中调用了一次,因此可以将这行代码删除。同时,如果保存失败,应该使用`request.getRequestDispatcher("edit.jsp").forward(request, response)`将请求转发回编辑页面,而不是使用重定向。
相关问题

struts2使用管理员权限增删改查

Struts2使用管理员权限增删改查可以通过以下步骤实现: 1. 定义权限控制 在Struts2中,可以使用拦截器来实现权限控制,定义一个拦截器来检查当前用户是否有管理员权限。例如,可以定义一个名为“adminInterceptor”的拦截器: ``` public class AdminInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (user == null || !user.isAdmin()) { return "noAdmin"; } return invocation.invoke(); } } ``` 在以上拦截器中,我们检查当前用户是否已登录,并且是否具有管理员权限。如果用户未登录或不是管理员,则返回“noAdmin”字符串。 2. 配置拦截器 在Struts2中,可以使用“interceptor-ref”元素来指定要使用的拦截器。例如,我们可以在Struts2配置文件中添加以下内容: ``` <interceptors> <interceptor name="adminInterceptor" class="com.example.AdminInterceptor" /> <interceptor-stack name="adminStack"> <interceptor-ref name="adminInterceptor" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> ``` 在以上配置中,我们定义了一个名为“adminStack”的拦截器堆栈,其中包含了我们定义的“adminInterceptor”拦截器和默认拦截器堆栈。使用“adminStack”来拦截需要管理员权限的Action。 3. 编写Action 在Struts2中,可以通过定义Action来处理请求。以下是一个简单的Action示例,用于管理用户: ``` public class UserAction extends ActionSupport { private List<User> users; public String list() { users = userService.listUsers(); return SUCCESS; } @Override public String execute() throws Exception { return list(); } public String add() { userService.addUser(user); return SUCCESS; } public String edit() { user = userService.getUser(id); return SUCCESS; } public String update() { userService.updateUser(user); return SUCCESS; } public String delete() { userService.deleteUser(id); return SUCCESS; } // getters and setters } ``` 在以上示例中,我们定义了五个方法来处理用户管理操作: - list:列出所有用户 - add:添加新用户 - edit:编辑用户信息 - update:更新用户信息 - delete:删除用户 在每个方法中,我们都需要检查当前用户是否具有管理员权限。如果用户未登录或不是管理员,则返回“noAdmin”字符串。 4. 配置Action 在Struts2中,可以使用“result”元素来指定Action执行后的结果。例如,我们可以在Struts2配置文件中添加以下内容: ``` <action name="user" class="com.example.UserAction" method="list"> <result name="success">/user/list.jsp</result> <interceptor-ref name="adminStack" /> </action> <action name="userAdd" class="com.example.UserAction" method="add"> <result name="success" type="redirectAction">user</result> <interceptor-ref name="adminStack" /> </action> <action name="userEdit" class="com.example.UserAction" method="edit"> <result name="success">/user/edit.jsp</result> <interceptor-ref name="adminStack" /> </action> <action name="userUpdate" class="com.example.UserAction" method="update"> <result name="success" type="redirectAction">user</result> <interceptor-ref name="adminStack" /> </action> <action name="userDelete" class="com.example.UserAction" method="delete"> <result name="success" type="redirectAction">user</result> <interceptor-ref name="adminStack" /> </action> ``` 在以上配置中,我们定义了五个Action,分别对应用户管理操作。在每个Action中,我们都指定了要使用的拦截器堆栈“adminStack”,以检查当前用户是否具有管理员权限。同时,我们还指定了Action执行后的结果,例如展示用户列表、跳转到添加用户页面等。 通过以上步骤,我们就可以使用管理员权限增删改查用户信息了。当用户未登录或不是管理员时,系统会直接返回“noAdmin”页面,避免未授权访问。

使用springssm写一个jsp页面的 增删改查

很抱歉,作为AI语言模型,我无法给出完整程序,但我可以为您提供一个简单的例子。 前置条件: 1. 已配置好Spring、SpringMVC和MyBatis。 2. 已创建数据库和表,并插入一些数据。 步骤一:编写实体类 创建一个Entity类,例如User,包含与数据库表字段对应的属性,并添加getter和setter方法。 ```java public class User { private int id; private String username; private String password; private String email; private String phone; // 必须有无参构造函数 public User() {} // 省略getter和setter方法 } ``` 步骤二:编写Mapper代理接口 创建一个Mapper接口,例如UserMapper,包含操作User表的CRUD方法。 ```java public interface UserMapper { // 查询所有用户 public List<User> findAll(); // 根据id查询用户 public User findById(int id); // 插入用户 public int insert(User user); // 更新用户 public int update(User user); // 删除用户 public int delete(int id); } ``` 步骤三:编写Mapper映射文件 创建一个Mapper映射文件,例如UserMapper.xml,在其中编写SQL语句实现Mapper接口中的方法。 ```xml <mapper namespace="com.example.mapper.UserMapper"> <select id="findAll" resultType="com.example.entity.User"> select * from user </select> <select id="findById" parameterType="int" resultType="com.example.entity.User"> select * from user where id = #{id} </select> <insert id="insert" parameterType="com.example.entity.User" useGeneratedKeys="true" keyProperty="id"> insert into user (username, password, email, phone) values (#{username}, #{password}, #{email}, #{phone}) </insert> <update id="update" parameterType="com.example.entity.User"> update user set username = #{username}, password = #{password}, email = #{email}, phone = #{phone} where id = #{id} </update> <delete id="delete" parameterType="int"> delete from user where id = #{id} </delete> </mapper> ``` 步骤四:编写Service层 创建一个Service类,例如UserService,使用@Autowired注解注入UserMapper,实现Controller层所需的业务逻辑。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> findAll() { return userMapper.findAll(); } public User findById(int id) { return userMapper.findById(id); } public int insert(User user) { return userMapper.insert(user); } public int update(User user) { return userMapper.update(user); } public int delete(int id) { return userMapper.delete(id); } } ``` 步骤五:编写Controller层 创建一个Controller类,例如UserController,使用@Autowired注解注入UserService,在其中编写请求方法,处理用户请求。 ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/list") public String list(Model model) { List<User> userList = userService.findAll(); model.addAttribute("userList", userList); return "userList"; } @RequestMapping("/add") public String add() { return "userAdd"; } @RequestMapping("/insert") public String insert(User user) { userService.insert(user); return "redirect:list"; } @RequestMapping("/edit/{id}") public String edit(@PathVariable("id") int id, Model model) { User user = userService.findById(id); model.addAttribute("user", user); return "userEdit"; } @RequestMapping("/update") public String update(User user) { userService.update(user); return "redirect:list"; } @RequestMapping("/delete/{id}") public String delete(@PathVariable("id") int id) { userService.delete(id); return "redirect:/user/list"; } } ``` 步骤六:编写jsp页面 根据请求方法,创建jsp页面,例如userList.jsp、userAdd.jsp、userEdit.jsp等,使用JSTL标签和EL表达式展示数据和传递参数。 以上就是使用SpringSSM框架实现用户增删改查的一个简单流程。需要注意的是,还需要在web.xml文件中配置DispatcherServlet和ContextLoaderListener。具体实现细节还需针对具体的项目需求和框架版本进行掌握。

相关推荐

最新推荐

recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。