A. Java的主要學習內容都有哪些
想要學習java一定就要先去了解java學習的路線,只有了解了學習路線我們才能夠知道要學習哪些內容,怎麼去學習,怎樣才能夠很好的系統學習,今天小編這里就為大家簡單的介紹一下有關java的學習路線是怎麼樣的。
java學習路線圖:
第一階段、java基礎知識
B. intitle:java從事J2EE需要那些技能
1.如果是剛入門的話,請先確保你了解java的基礎知識,有過一定的編碼經驗。
2.選擇一種mvc架構。目前流行的也就spring mvc和struts-spring-hibernate(所謂的ssh)。
如果是自己做著玩邊做邊學的話,可以先從spring mvc入手,ssh的學習曲線還是比較高的。如果是就業或擇業的話,由於struts在歷史沿襲,應該使用struts的單位基數多的,而且很多單位都是struts+自己的一套DAO。
學spring mvc建議直接從spring mvc3開始學,學struts直接從struts2開始學。
3.學習IOC(控制反轉/依賴注入),無論任何框架,IOC都是構建上下文(Context)的原理。初期你只要了解ioc的基本原理和使用目的就夠了。這樣,你在配置文件的時候,就會知道你配置的東西是幹嘛的,怎麼用的了。
4.選擇app容器。自己玩的話,一個tomcat就足夠了。如果是加入企業的話,就要看企業所用的容器了。建議配一個tomcat,它卓越的熱部署功能是開發和調試的利器。
5.了解taglib(含JSTL或者struts的標簽)。在後端java代碼編寫好後,你需要一個jsp頁面來展示你的想要展示的數據。而action已經為你將數據做好了封裝,接著你所要完成的就是在視圖層接收數據並展示了。在原始的jsp上都是用<%%>中加入java代碼來實現的,而標簽庫可以簡化和復用,使java和頁面分離。
6.了解業務模式和資料庫。做j2ee,一般大多使用在應用系統。除了了解所要實現的業務,你也一定會跟資料庫交互。所以,你光會寫java代碼遠遠不夠的。你應該學會一些基礎的sql語句以及資料庫的連接,以便來你自己來測試自己做的功能模塊,在數據流上是否正確。
7.其他:以下的內容並不是j2ee工程師必須學會的,但是會對個人能力提升有好處。
html--這個比較簡單不多說了。
css--如果企業級開發的話,一般前端工程師會設計一套風格統一且完整的css編碼了,你只需知道在html里調用哪個css的class就行了,自己玩的話建議去下載一個web或者企業應用的模板。自己寫的話太累。
js--js要學精的話還是比較累的。你可以先從jquery入手,jquery強大的選擇器可以快速的幫你完成dom,而且不必擔心瀏覽器兼容問題。至於ajax的話,各種js庫已經可以幫你完成了,你只需簡單的配置一下就可以了。
xml&json--這兩種是前後端交互以及後端和後端交互的常用數據交互格式,尤其是外部介面調用的時候。json沒話說,開始只要了解json的格式就行了,很多jsonutil都會幫助你做轉化。xml的話,格式比較簡單,主要處理的就是xml文檔的解析和封裝。詳細應該根據選擇的dom包的api來處理,主流的也就是jdom,dom4j等。
8.進階:一般基於框架的j2ee開發,培養一個寫java代碼的人,只要不是很笨的話,基本上一個月就可以應付了。在寫一段時間的代碼後,你會發現你的做事情絕大部分都是在做數據的裝箱和拆箱(這個名詞你可以自己一下),對於java的設計模式、並發處理要求並不高。這時你會反過頭來重新審視java的數據類型和結構、重新去審視程序的代碼優化和執行效率、以及並發控制,這個是後話了。
C. j2ee怎麼防止sql注入
PreparedStatement 就行了,不要自己去拼sql就行了,其實java是天生就支持防注入的...只是有人偷懶寫程序.
D. Java學習內容有哪些
目前Java培訓內容包括:
1、HTML+CSS3+資料庫
2、Java SE(Java面向對象思想;設計模式、面向對象原則、Java高階API、線程、網路編程、反射、NIO)
3、Java web(Java web基礎、JS、DOM操作、JSP/Servlet、第三方工具包、Tomcat...)
4、框架(網路原理、HTTP協議、Linux操作系統、雲服務搭建、SSM框架應用、Oracle應用、Spring JPA、Hibernate...)
5、高可用、高並發、高擴展(SpringBoot、緩存、分布式、插件、全文索引、服務中間件、消息中間件、雲伺服器、雲存儲、雲資料庫、域名服務...)
6、微服務、大數據
以下是我們2020年更新的課程,您可以了解一下!
如想學習,可以在我們線上學習平台:百戰程序員進行了解!
希望對你有所幫助,望採納!!
E. j2ee怎麼防止sql注入
開發web的過程中,需要防範sql注入,或是javascript代碼注入,以下通過過濾器(filter)實現的,只實現了tomcat和weblogic下,其它應用伺服器可以參照實現即可。
非常簡單只需三個步驟:
第一步,在你的工程加入如下所示的過濾器代碼,一共兩個類:
CharFilter.java
[java] view plain
package com.hyjx.filter;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
/**
* @author jfish
* @since 2006.1.12
*/
public class CharFilter implements Filter {
public FilterConfig config;
public void setFilterConfig(FilterConfig config) {
this.config = config;
}
public FilterConfig getFilterConfig() {
return config;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
boolean filter = true;// 是否過濾;
String excludeURL;// 不過濾的url地址
excludeURL = config.getInitParameter("excludeURL");
if (excludeURL == null || "".equals(excludeURL)) {
filter = true;
} else {
String url = req.getRequestURI();// url地址
String[] excludeURLA = excludeURL.split(",");
for (int i = 0; i < excludeURLA.length; i++) {
if (url.indexOf(excludeURLA[i]) > 0) {// 如果含有不讓過濾的url地址則不過濾。
filter = false;
}
}
}
//得到應用伺服器類型
String appServer = config.getInitParameter("appServer");
if(filter)//需要過濾
{
if("tomcat".equals(appServer))//應用伺服器為tomcat時則:
{
if(checkTomcat(req,res))
{
String webapp = req.getContextPath();
res.sendRedirect(webapp + "/charError/charError.html");
}
else
{
chain.doFilter(request, response);
}
}
else//應用伺服器為weblogic時則:
{
Map m = req.getParameterMap();
if(req instanceof ParameterRequestWrapper) {
m = ((ParameterRequestWrapper)req).getSuperRequest().getParameterMap();
req = ((ParameterRequestWrapper)req).getSuperRequest();
}
//System.out.println(((String[])m.get("op"))[0] + "-----------" + req.getParameter("op"));
ParameterRequestWrapper wrapRequest=new ParameterRequestWrapper(req, m);
if(checkWeblogic(wrapRequest, res))
{
String webapp = req.getContextPath();
res.sendRedirect(webapp + "/charError/charError.html");
}
else
{
chain.doFilter(wrapRequest, response);
}
}
}
else//不需要過濾
{
chain.doFilter(request, response);
}
}
public boolean checkWeblogic(HttpServletRequest req, HttpServletResponse response) {
Map map = req.getParameterMap();
Set set = map.entrySet();
//request中的參數設置
boolean bl = false;
if (map != null) {
for (Iterator it = set.iterator(); it.hasNext();) {
Map.Entry entry = (Entry) it.next();
if (entry.getValue() instanceof String[]) {
String[] values = (String[]) entry.getValue();
for (int i = 0; i < values.length; i++) {
//替換成全形字元。
values[i] = getQjString(values[i]);
//是否包含有特殊字元
if (getCheckString(values[i])) {
return true;
}
}
}
}
}
//cookie過濾:除了JSESSIONID以外的cookie進行過濾
Cookie[] cookies = req.getCookies();
String cookieName = "";
String cookieValue="";
if(cookies!=null)
{
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
cookieName = c.getName();
//System.out.println("=======cookie:"+cookieName);
if(cookieName!= null && !"JSESSIONID".equals(cookieName.toUpperCase()))
{
cookieValue = c.getValue();
if (getCheckString(cookieValue)) {
return true;
}
//進行特殊字元替換
cookieValue = getQjString(cookieValue);
c.setValue(cookieValue);
response.addCookie(c) ;
}
}
}
return bl;
}
public boolean checkTomcat(HttpServletRequest req, HttpServletResponse response) {
Map map = req.getParameterMap();
//運用反射機制,讓其可修改。
try
{
Method method=map.getClass().getMethod("setLocked",new Class[]{boolean.class});
method.invoke(map,new Object[]{new Boolean(false)});
}
catch(Exception e)
{
e.printStackTrace();
}
Set set = map.entrySet();
boolean bl = false;
if (map != null) {
for (Iterator it = set.iterator(); it.hasNext();) {
Map.Entry entry = (Entry) it.next();
if (entry.getValue() instanceof String[]) {
String[] values = (String[]) entry.getValue();
for (int i = 0; i < values.length; i++) {
//替換成全形字元。
values[i] = getQjString(values[i]);
//是否包含有特殊字元
if (getCheckString(values[i])) {
return true;
}
}
}
}
}
//cookie過濾:除了JSESSIONID以外的cookie進行過濾
Cookie[] cookies = req.getCookies();
String cookieName = "";
String cookieValue="";
if(cookies!=null)
{
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
cookieName = c.getName();
//System.out.println("=======cookie:"+cookieName);
if(!"JSESSIONID".equals(cookieName))
{
cookieValue = c.getValue();
if (getCheckString(cookieValue)) {
return true;
}
//進行特殊字元替換
cookieValue = getQjString(cookieValue);
c.setValue(cookieValue);
response.addCookie(c) ;
}
}
}
return bl;
}
//特殊符號替換成全形.
/*
單引號'
雙引號"
小於號<
大於號>
分號;
等號=
注釋符--