问题出现
附BaseServlet和TeacherServlet代码:
public class BaseServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("已经进入了后台");
//解决中文乱码:
//一定要在获取请求参数之前调用有效:
req.setCharacterEncoding("UTF-8");
//解决响应中文乱码
resp.setContentType("text/html;charset=UTF-8");
//反射
//String action = req.getParameter("action");
//获取action业务鉴别字符串,获取相应的业务 方法反射对象
//实训老师用后缀路径来直接判断:
//1.获取请求路径
String uri = req.getRequestURI();//HJ_JW/users/login
System.out.println("请求uri:"+uri);
//2.获取方法名称
String methodName = uri.substring(uri.lastIndexOf("/") + 1);//login
System.out.println("方法名称:"+methodName);
//3.获取方法对象Method,根据方法名称反射方法对象
try {
Method method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
//调用业务 方法
method.invoke(this,req,resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
TeacherServlet:
/**
* 这是我们的Teacher对应的控制器
*/
@WebServlet("/teacherServlet/*")
public class TeacherServlet extends BaseServlet{
private TeacherService teacherService =new TeacherServiceImpl();
/**
* 添加老师
* 请求的URL:/HJ_JW/teacherServlet/add
* 请求的方式:POST
* 请求的类型:表单类型
* 返回的类型:JSON
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
public void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Map<String, Object> result = new HashMap<>();
//1.获取前端表单提交的数据
String username = req.getParameter("username");//这里的绿色部分尽量跟实体类属性保持一致
String password = "123456";
String name = req.getParameter("name");
String gender = req.getParameter("gender");
String rank = req.getParameter("rank");
String pic = req.getParameter(null);
//2.非空校验
if (StringUtils.isNullOrEmpty(username) || StringUtils.isNullOrEmpty(password) || StringUtils.isNullOrEmpty(name) || StringUtils.isNullOrEmpty(gender) || StringUtils.isNullOrEmpty(rank)){
result.put("code",-1);
result.put("msg","您的输入项不能为空!");
}else{
//访问数据库
//创建需要保存到数据库的数据
Users teacher = new Users(null, username, password, name, gender, rank, pic, 1, 0);
if (teacherService.register(teacher)==1){
result.put("code",1);
result.put("msg","教师添加成功");
}else {
result.put("code",0);
result.put("msg","教师添加失败!");
}
}
//5.将结果响应到前端
PrintWriter pw = resp.getWriter();
//创建 gson,将map转换为 JSON
Gson gson = new Gson();
String toJson = gson.toJson(result);
pw.write(toJson);
}
Maven 仓库:
代码没有问题,注解路径也没有问题,但是运行时就会报错:
对此,因为是 maven 新手,所以困扰了我半天时间,终于最后找到了原因,没有在artifice里面加入jar
解决方法
1.打开 Project Structure工程结构
2.找到 Output Layout 下的 Available Elements
3.鼠标右键项目名称 然后点击 Put into Output root,这样的话,就将maven的jar包导入 artifice里面了
这样的话问题就成功解决啦!新手上路,多多关照!