在后端进行POST请求后端接收前端数据时,关于PrintWriter:参考地址
注意传进来的对象为空说明未在数据库查到拥有该账号的用户,所以需要告诉前端“账号密码不正确”,如果不为空说明有该用户,所以可以登录。
@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String account=req.getParameter("account");String password=req.getParameter("password");System.out.println(account);System.out.println(password);PrintWriter printWriter=resp.getWriter();User user= null;try {user = dao.logindao(account,password);if(user==null) {printWriter.print("账号或密码不正确!");}else {ObjectMapper objectMapper=new ObjectMapper();String json=objectMapper.writeValueAsString(user);printWriter.print(json);}} catch (SQLException throwables) {throwables.printStackTrace();printWriter.print("服务器忙...请稍后重试!");}}
最开始置对象为空,如果没有查到该用户直接返回空。
import com.mysql.cj.jdbc.Driver;import java.sql.*;public class LoginDao {public User logindao(String account, String password) throws SQLException {String sql="select * from user where account=? and password=?";Connection connection=DButils.getConnection();PreparedStatement preparedStatement= connection.prepareStatement(sql);preparedStatement.setObject(1,account);preparedStatement.setObject(2,password);ResultSet resultSet=preparedStatement.executeQuery();User user=null;if(resultSet.next()){user=new User();String psw=resultSet.getString("password");user.setAccount(account);user.setPassword(psw);}DButils.close(resultSet,preparedStatement,connection);return user;}
}
前端代码需要注意,我们使用的是原生的servlet,前端传给后端的数据是JSON形式,后端无法识别,需要进一步对该数据进行处理才可以传给后端。
<script>export default {data() {return {from: {account: "",password: ""}}},methods: {login() {this.$http.post("LoginServlet", jsonToString(this.from)).then(resp => {if(resp.data=="账号或密码不正确!"){this.$message({message: '账号或密码不正确',type: 'warning'});}else if(resp.data=="服务器忙...请稍后重试!"){this.$message({message: '系统忙,请稍后再试!',type: 'error'});}else{this.$message({message: '登录成功',type: 'success'});this.$router.push("/main");//在js中进行路由导航}})}},}//将json对象序列化为键=值&键=值function jsonToString(jsonobj) {console.log(jsonobj)var str = "";for (var s in jsonobj) {str += s + "=" + jsonobj[s] + "&";}return str.substring(0, str.length - 1);}
</script>