IDEA下SSM框架项目笔记

来源:互联网 发布:第三方支付系统源码 编辑:程序博客网 时间:2024/05/24 00:28

希望如果有同样问题的同志看到笔记之后能有所帮助,我的环境是SSM,IDE是IDEA

IDEA的run窗口

想看System.out.println的输出信息,找了半天,在View->Tool Windows->Run,下次注意

ajax回传404错误

原来是由于之前服务器报错,tomcat停掉了,然后还调试了半天,重启就好了

ajax回传500错误

500是服务器错误,也就是java的代码问题,代码如下

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })    @ResponseBody    public Userdologin(@RequestBody User user) {        return user;    }

ajax上传的json数据为

{userName: "test", pswd: "123456"}

User实体类的定义如下

package entity;public class User {    private Integer id;    private String userName;    private String pswd;    private String userType;    private Double initValue;    private String walletAddr;    public User(Integer id, String userName, String pswd, String userType, Double initValue, String walletAddr) {        this.id = id;        this.userName = userName;        this.pswd = pswd;        this.userType = userType;        this.initValue = initValue;        this.walletAddr = walletAddr;    }    public Integer getId() {        return id;    }    public String getUserName() {        return userName;    }    public String getPswd() {        return pswd;    }    public String getUserType() {        return userType;    }    public Double getInitValue() {        return initValue;    }    public String getWalletAddr() {        return walletAddr;    }}

但是User的对象结构不只有userName和pswd两个属性,所以这样的注入是失败的,故而报错500,解决方案是使用String来传,最后修改的demo如下,是可以成功运行的

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })    @ResponseBody    public String dologin(@RequestBody String param) {        Map maps = JSON.parseObject(param);        System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");        for (Object obj : maps.keySet()){            System.out.println("key为:"+obj+"值为:"+maps.get(obj));        }        return "ok";    }

mybaits多参数查询

网上给了三种方式,我用了最后一种推荐的方式,清晰易懂,代码如下:

UserMapper.java

 User selectByUserPswd(@Param("userName")String userName, @Param("pswd")String pswd);

UserMapper.xml

 <select id="selectByUserPswd" resultMap="BaseResultMap">    select * from user where user_name = #{userName,jdbcType=VARCHAR} and pswd = #{pswd,jdbcType=VARCHAR}  </select>

UserService.java

 public User getUser(String userName, String pswd){     return userMapper.selectByUserPswd(userName,pswd); }

UserAction.java

    @RequestMapping(value = "/dologin", method = {RequestMethod.POST })    @ResponseBody    public User dologin(@RequestBody String param) {        Map maps = JSON.parseObject(param);        User result = userService.getUser((String)maps.get("userName"), (String)maps.get("pswd"));        return result;    }

chrome中的debugger工具

chrome中除了有单步调试的js的工具以外,还可以使用debugger来进行断点,方法很简单,在要停的js文件中的位置加上debugger;语句就行了,打开chrome之后打开开发者工具就会自动断点,如果不打开的话就会正常执行
参考资料:http://bbs.fanruan.com/thread-65003-1-1.html

IntelliJ IDEA2016 + tomcat 设置热部署

参考资料:http://blog.csdn.net/miaoy220/article/details/53450179
其中的On ‘Update’ action那里被我改成了Redeploy,即便是这样,对于html,js等静态文件通常改了之后要刷新几遍才会被更新,而java文件甚至常常需要按tomcat的redeploy才能被更新,但是也很好了,毕竟比restart节省了很多时间

JSTL无法在项目中使用

首先的原因就是maven中没有引入包,所以要配置maven依赖,代码如下:

<dependency>     <groupId>jstl</groupId>     <artifactId>jstl</artifactId>     <version>1.2</version> </dependency> <dependency>     <groupId>taglibs</groupId>     <artifactId>standard</artifactId>     <version>1.1.2</version> </dependency> 

参考资料:http://wj196.iteye.com/blog/787566
但是配置了之后还是不好用,这个时候reimport一下就行了,也就是在pom.xml文件上右键,Maven->Reimport,这样就好了

spring mvc无法引入静态模块

首先做一个过滤,让静态文件可以被识别
修改web.xml文件,增加对静态资源的url映射,要加在org.springframework.web.servlet.DispatcherServlet的前面
比如js和css文件

<servlet-mapping>    <servlet-name>default</servlet-name>    <url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping>    <servlet-name>default</servlet-name>    <url-pattern>*.css</url-pattern></servlet-mapping>

css和js等文件不要放到WEB-INF下面,要放到webapp里面,如图,我的结构是这样的
这里写图片描述
然后在mvc-dispatcher-servlet.xml上面做名字和路径的映射:

    <!--html调用css,js,images等静态资源的路径使用方法-->    <mvc:resources location="/images/" mapping="/images/**"/>    <mvc:resources location="/js/" mapping="/js/**"/>    <mvc:resources location="/css/" mapping="/css/**"/>

之后在html或者jsp文件里使用/images/a.jpg这样的方式就能访问到webapp下images文件夹里的图片了,比如我的html代码

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>医保账户</title><link href="/css/home.css" rel="stylesheet" type="text/css" media="all"><link href="/css/css.css" rel="stylesheet" type="text/css" media="all"><script type="text/javascript" src="/js/jquery.js"></script></head><body><!--top--><div class="top">    <div class="box">        <a href="home" class="return"><img src="/images/return.png"></a>        个人信息        </div></div></body></html>

springMVC使用html做视图

spring mvc的默认配置是识别jsp文件的,但是不识别html,默认配置如下:

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/pages/" />        <property name="suffix" value=".jsp" />        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />    </bean>

所以在controller方法中返回值之后都默认去定位到jsp文件,即便是把jsp改成html也无法定位到html,controller中的代码如下:

    @RequestMapping("/home")    public ModelAndView home() {        ModelAndView mav = new ModelAndView();        // 放入jsp路径,配置后缀是jsp,所以默认访问home.jsp        mav.setViewName("home");        return mav;    }

为了让他能够识别html,将配置改成了

    <bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="order" value="10"></property>        <property name="prefix" value="/WEB-INF/pages/"></property>        <property name="contentType" value="text/html"></property>    </bean>

controller中的代码如下:

    @RequestMapping("/home")    public ModelAndView home() {        ModelAndView mav = new ModelAndView();        // 需要加html后缀        mav.setViewName("home.html");        return mav;    }

上面两个代码就能够成功的定位到html文件了

js对象转换成json对象

明明是很简单的代码,网上却给出了一堆字符串拼接的,真是醉了,最简洁易懂的代码如下

var jsonData = {};jsonData.MainCmdID = 1;jsonData.SubCmdID = 1;var toStr = JSON.stringify(jsonData);alert(toStr);

json转Map对象

有一个阿里巴巴的包,叫做fastjson,我用的是这个
调用函数一句就行了

import com.alibaba.fastjson.JSON;//导入的包String param = {"username":"test","password":"123456"};Map maps = JSON.parseObject(param);

欢迎加入中科院开源软件自习室

原创粉丝点击