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。具体实现细节还需针对具体的项目需求和框架版本进行掌握。