- eclipce中新建Dynamic web的版本号必须与Tomcat版本号匹配,通常Tomcat7.0左右配Dynamic web3.0以下,不然会no service can be run 以下是修改工程版本方法:
workspace-jee\项目名称\.settings\org.eclipse.wst.common.project.facet.core.xml这个配置文件,将<installed facet="jst.web" version="3.0"/> 只要将version="3.0"改成version="2.5",然后重启eclipse即可
- 再跟视频敲代码时一定要细心
- 在包下建Filter:new---》Filter---》name---》next---》输入*.action--->ok-->finish
- 工作原理:由index。Jsp生成一个类似超链接的语句 点击后跳转到另外一个页面,这中间依靠的就是FilterDispatcher
以下是FilterDispatcer 源码:
package FilterTest;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
* Servlet Filter implementation class FilterTest
*/
public class FilterTest implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
String serveletPath = req.getServletPath();
String path = null;
if("/product-input.action".equals(serveletPath)){
path="page/input.jsp";
}
if("/product-save.action".equals(serveletPath)){
//获取请求参数
String name=request.getParameter("name");
String sex=request.getParameter("sex");
int num=Integer.parseInt(request.getParameter("num"));
//封装为student类
Student s=new Student(name, sex, num);
//执行保存操作
System.out.println("Save Student:" + s);
//s.setName("HelloWorld");
//将s保存到request中
request.setAttribute("s", s);
path = "page/detais.jsp";
}
if(path!=null){
request.getRequestDispatcher(path).forward(request, response);
return;
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
- 带参构造器 get、set方法
- http://struts.apache.org/
- 配置struts环境:
通用方法:Apache官网下载的Struts2压缩文件中有相应的范例,导入jar包,配置web.xml文件都可以参考里面的范例
(一)导入对应jar包:
- 配置WEB-INF下的web.xml文件
范例:E:\JavaEE\OpenSource\struts-2.5.16-all\struts-2.5.16\apps\struts2-rest-showcase\WEB-INF\中的web.xml
----》复制filter标签对----》粘到自己的web.xml文件中 注:filter标签对是放在Web-App标签对里
配置好后:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="starter" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">"
id="WebApp_ID" version="2.5">
<!-- Filters -->
<!-- START SNIPPET: filter -->
<filter>
<filter-name>action2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- END SNIPPET: filter -->
<filter-mapping>
<filter-name>action2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- 添加DTD约束
配置包下面的struts.xml文件:直接收索struts.xml 复制到src下---》打开struts.xml:
在struts.xml文件复制以下地址
Window----》XML----》XML Catalog----》Add---》将复制好的地址贴到Key上 KeyType修改为URL
点击File System 搜索struts-2.5.dtd 搜到后点击---》OK
- Eclipse 替换选中的代码: Ctrl+f
- 可能是缓存的问题
- 成功后的目录如下:
1)StudentAction实现了一个接口:ModelDriven<Student>
这个接口的重写了以下方法,作用使得泛型类的对象传给valuestack,一旦传给valuestack,在detais.jsp页面就可以通过属性名直接获取input.jsp上的参数值
2)Struts中的配置如下,涉及的知识:占位符(通配符)、<action>标签对包含的属性:name+method+class、<result>标签对
- 尽量不要用info,info应该是关键字
- 读取Package Explorer的src下面的.xml/。File文件
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
根据不同需要 在采取不同的方式
Property/
- XML中<beans>中属性概述
14、前期报错是因为没有使用占位符并且在queryForObject()中重复定义username导致报1>0的错误