return new ActionForward(mapping.findForward(“login”))
在struts中用这个进行转发时(不是重定向),转发的过程是:
html表单点击提交,struts把请求交给 相应的action;
action处理请求,然后进行转发或重定向,即用上面的语句;
如果是转发,则action把相应的请求再原封不动地交给actionforward()里面的页面。**(理解这点很重要)
比如你填写了一个页面然后交给action,actionforward里还是这个页面,于是又转了回去,你表单里填的值这时就能在此页面获取了。放在web-inf目录下的jsp文件是用户无法直接通过浏览器输入路径访问的,但是程序内部可以访问。如果想让用户通过输入路径访问,需要放到处web-inf目录下的其他地方。
配置stucts2的时候一定记得在自动生成的struts.xml中的package标签内加上namespace=”/”,不然会提示“No result defined for action action.LoginAction and result”
关于servlet:
src中的文件要想被当做接口访问,需要配置servlet映射,在web.xml
中配置即可:
<servlet-name>test</servlet-name>
<servlet-class>testclass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/servlet/test</url-pattern>
</servlet-mapping>
这里很好理解,即访问/servlet/test这个路径时,会自动映射到testclass这个类(servlet),然后在这个servlet中的get和post方法中调用src下的其他类即可。
比如输出json数据:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Printdata p = new Printdata();//调用src下的其他类
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter out = response.getWriter();
out.write(p.back());//调用p中的方法返回给客户端json数据。
}
- 现在基本对javaee的流程清楚了:
bean:对数据库表属性的获取,即一连串的getter和settter
dao:直接对数据库表的操作,增删改查
service:在dao的基础之上,利用dao的提供的基本操作来进行逻辑控制,比如验证用户是否合法;
action:利用service提供的逻辑控制方法,来处理表单提交。
可见,从上到下,每个部分只依赖于它的上层,又为下层提供服务,从而降低了耦合性。