private UserServiceImpl userService = new UserServiceImpl();报错,说private不允许写在这
public class RegistServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
private UserServiceImpl userService = new UserServiceImpl();
String username = req.getParameter("username");
String password = req.getParameter("password");
String email = req.getParameter("email");
String code = req.getParameter("code");
if (code.equalsIgnoreCase("abcde")){
if (!userService.existsUsername(username)){//用户名不存在,注册成功
userService.registUser(new User(null,username,password,email));
req.getRequestDispatcher("/regist_success.html").forward(req,resp);
}else {
//用户名存在
req.getRequestDispatcher("/regist.html").forward(req,resp);
}
}else {
req.getRequestDispatcher("/regist.html").forward(req,resp);
}
}
}
一般把 private UserServiceImpl userService = new UserServiceImpl(); 这样的代码放在方法外面,作为全局变量使用。
一个内部变量只能在函数里使用,也没必要写private
我猜你是把它放错位置了,往外提出一个花括号就好了
通常不建议在这里直接定义 实现类,如果是工具类的话,最好从命名上区分下。
private UserServiceImpl userService = new UserServiceImpl();
如果有对应的接口类,可以参考以下调整
@Autowired
private UserService userService;
局部变量在方法中使用,方法执行完就没用了,所以即便是可以修饰也没有意义。
因为语法就是这么要求的,不允许在方法内部写。
你在方法内部用的话,修饰符用private没意义的,本来局部变量的作用范围就是在这个方法的内部